Lokomotive AKS configuration reference

    Introduction

    This configuration reference provides information on configuring a Lokomotive cluster on Azure AKS with all the configuration options available to the user.

    Prerequisites

    • lokoctl installed locally .
    • kubectl installed locally to access the Kubernetes cluster.

    Configuration

    To create a Lokomotive cluster, we need to define a configuration.

    Example configuration file:

    #myakscluster.lokocfg
    variable "state_s3_bucket" {}
    variable "lock_dynamodb_table" {}
    variable "asset_dir" {}
    variable "cluster_name" {}
    variable "workers_count" {}
    variable "state_s3_key" {}
    variable "state_s3_region" {}
    variable "workers_vm_size" {}
    variable "location" {}
    variable "tenant_id" {}
    variable "subscription_id" {}
    variable "client_id" {}
    variable "client_secret" {}
    variable "resource_group_name" {}
    variable "application_name" {}
    variable "manage_resource_group" {}
    
    backend "s3" {
      bucket         = var.state_s3_bucket
      key            = var.state_s3_key
      region         = var.state_s3_region
      dynamodb_table = var.lock_dynamodb_table
    }
    
    # backend "local" {
    #   path = "path/to/local/file"
    #}
    
    
    cluster "aks" {
      asset_dir    = pathexpand(var.asset_dir)
      cluster_name = var.cluster_name
    
      tenant_id       = var.tenant_id
      subscription_id = var.subscription_id
      client_id       = var.client_id
      client_secret   = var.client_secret
    
      location              = var.location
      resource_group_name   = var.resource_group_name
      application_name      = var.application_name
      manage_resource_group = var.manage_resource_group
    
      worker_pool "default" {
        count   = var.workers_count
        vm_size = var.workers_vm_size
    
        labels = {
          "key" = "value",
        }
    
        taints = [
          "node-role.kubernetes.io/master=NoSchedule",
        ]
      }
    
      tags = {
        "key" = "value",
      }
    }
    

    NOTE: Should you feel differently about the default values, you can set default values using the variable block in the cluster configuration.

    Attribute reference

    Argument Description Default Type Required
    asset_dir Location where Lokomotive stores cluster assets. - string true
    cluster_name Name of the cluster. NOTE: It must be unique per resource group. - string true
    tenant_id Azure Tenant ID. Can also be provided using the LOKOMOTIVE_AKS_TENANT_ID environment variable. - string true
    subscription_id Azure Subscription ID. Can also be provided using the LOKOMOTIVE_AKS_SUBSCRIPTION_ID environment variable. - string true
    resource_group_name Name of the resource group, where AKS cluster object will be created. Please note, that AKS will also create a separate resource group for workers and other required objects, like load balancers, disks etc. If manage_resource_group parameter is set to false, this resource group must be manually created before cluster creation. - string true
    client_id Azure service principal ID used for running the AKS cluster. Can also be provided using the LOKOMOTIVE_AKS_CLIENT_ID. This parameter is mutually exclusive with application_name parameter. - string false
    client_secret Azure service principal secret used for running the AKS cluster. Can also be provided using the LOKOMOTIVE_AKS_CLIENT_SECRET. This parameter is mutually exclusive with application_name parameter. - string false
    tags Additional tags for Azure resources. - map(string) false
    location Azure location where resources will be created. Valid values can be obtained using the following command from Azure CLI: az account list-locations -o table. “West Europe” string false
    application_name Azure AD application name. If specified, a new Application will be created in Azure AD together with a service principal, which will be used to run the AKS cluster on behalf of the user to provide full cluster creation automation. Please note that this requires permissions to create applications in Azure AD . This parameter is mutually exclusive with client_id and client_secret. - string false
    manage_resource_group If true, a resource group for the AKS object will be created on behalf of the user. true bool false
    worker_pool Configuration block for worker pools. At least one worker pool must be defined. - list(object) true
    worker_pool.count Number of workers in the worker pool. Can be changed afterwards to add or delete workers. - number true
    worker_pool.vm_size Azure VM size for worker nodes. - string true
    worker_pool.labels Map of Kubernetes Node object labels. - map(string) false
    worker_pool.taints List of Kubernetes Node taints. - list(string) false

    Applying

    To create the cluster, execute the following command:

    lokoctl cluster apply
    

    Destroying

    To destroy the Lokomotive cluster, execute the following command:

    lokoctl cluster destroy --confirm