resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_pet" "azurerm_kubernetes_cluster_name" { prefix = "cluster" } resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" { prefix = "dns" } resource "azurerm_virtual_network" "vnet" { name = var.virtual_network_name address_space = ["192.168.0.0/16"] location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name subnet { name = "subnet1" address_prefix = "192.168.1.0/24" } } resource "azapi_resource" "aks" { count = 1 type = "Microsoft.ContainerService/ManagedClusters@2024-05-01" name = random_pet.azurerm_kubernetes_cluster_name.id parent_id = azurerm_resource_group.rg.id location = azurerm_resource_group.rg.location identity { type = "SystemAssigned" } body = { extendedLocation = { name = var.aks_extended_zone type = "EdgeZone" } sku = { name = "Base" tier = "Free" } properties = { dnsPrefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id kubernetesVersion = "1.29" agentPoolProfiles = [ { name = "agentpool" count = var.aks_node_count vmSize = var.aks_node_vm_size osDiskSizeGB = 128 kubeletDiskType = "OS" vnetSubnetID = element(tolist(azurerm_virtual_network.vnet.subnet), 0).id maxPods = 30 type = "VirtualMachineScaleSets" enableAutoScaling = false, scaleDownMode = "Delete", orchestratorVersion = "1.29" enableNodePublicIP = false mode = "System" enableEncryptionAtHost = false enableUltraSSD = false osType = "Linux" osSKU = "Ubuntu" upgradeSettings = { maxSurge = "10%" } enableFIPS = false } ] windowsProfile = { adminUsername = var.admin_username adminPassword = var.admin_password licenseType = "None" enableCSIProxy = true } servicePrincipalProfile = { clientId = "msi" } enableRBAC = true supportPlan = "KubernetesOfficial" networkProfile = { networkPlugin = "azure" networkPolicy = "none" networkDataplane = "azure" loadBalancerSku = "standard" loadBalancerProfile = { managedOutboundIPs = { count = 1 } backendPoolType = "nodeIPConfiguration" } serviceCidr = "10.0.0.0/16" dnsServiceIP = "10.0.0.10" outboundType = "loadBalancer" serviceCidrs = [ "10.0.0.0/16", ] ipFamilies = ["IPv4"] } autoUpgradeProfile = { upgradeChannel = "none" nodeOSUpgradeChannel = "NodeImage" } disableLocalAccounts = false storageProfile = { diskCSIDriver = { enabled = true } fileCSIDriver = { enabled = true } snapshotController = { enabled = true } } oidcIssuerProfile = { enabled = false } azureMonitorProfile = { metrics = { enabled = false } } } } timeouts { create = "6h" } }