Terraform0.14


resource "azurerm_resource_group" "example" {
  name     = var.aks_config["resource_group_name"]
  location = var.aks_config["location"]
}


module "network" {
  version             = "3.3.0"
  source              = "Azure/network/azurerm"
  resource_group_name = var.aks_config["resource_group_name"]
  address_space       = var.aks_config["address_space"]
  subnet_prefixes     = var.subnet_prefixes
  subnet_names        = var.subnet_names
  depends_on          = [azurerm_resource_group.example]
}
data "azuread_group" "aks_cluster_admins" {
  display_name = var.aks_config["adgroup_name"]
}

module "aks" {
  version                          = "4.8.0"
  source                           = "Azure/aks/azurerm"
  resource_group_name              = var.aks_config["resource_group_name"]
  client_id                        = var.aks_config["client_id"]
  client_secret                    = var.aks_config["client_secret"]
  kubernetes_version               = var.aks_config["kubernetes_version"]
  orchestrator_version             = var.aks_config["orchestrator_version"]
  prefix                           = var.aks_config["cluster_name"]
  network_plugin                   = var.aks_config["network_plugin"]
  vnet_subnet_id                   = module.network.vnet_subnets[0]
  os_disk_size_gb                  = var.aks_config["os_disk_size_gb"]
  sku_tier                         = var.aks_config["sku_tier"]
  enable_role_based_access_control = var.aks_config["enable_role_based_access_control"]
  rbac_aad_admin_group_object_ids  = [data.azuread_group.aks_cluster_admins.id]
  rbac_aad_managed                 = var.aks_config["rbac_aad_managed"]
  private_cluster_enabled          = var.aks_config["private_cluster_enabled"] # default value
  enable_http_application_routing  = var.aks_config["enable_http_application_routing"]
  enable_azure_policy              = var.aks_config["enable_azure_policy"]
  enable_auto_scaling              = var.aks_config["enable_auto_scaling"]
  agents_min_count                 = var.aks_config["agents_min_count"]
  agents_max_count                 = var.aks_config["agents_max_count"]
  agents_count                     = null # Please set `agents_count` `null` while `enable_auto_scaling` is `true` to avoid possible `agents_count` changes.
  agents_max_pods                  = var.aks_config["agents_max_pods"]
  agents_pool_name                 = var.aks_config["agents_pool_name"]
  agents_availability_zones        = var.agents_availability_zones
  agents_type                      = var.aks_config["agents_type"]
  agents_labels = {
    "nodepool" : "defaultnodepool"
  }
  agents_tags = {
    "Agent" : "defaultnodepoolagent"
  }
  network_policy                 = "azure"
  net_profile_dns_service_ip     = "10.0.0.10"
  net_profile_docker_bridge_cidr = "170.10.0.1/16"
  net_profile_service_cidr       = "10.0.0.0/16"
  depends_on                     = [module.network]
}