2024-11-05 17:23:15 +08:00

135 lines
3.6 KiB
HCL

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"
}
}