TerraformAZURE
Azure AKS Cluster
Managed Kubernetes Service in Azure with system node pool, RBAC, and managed identity.
kubernetesaksazurecontainers
Prerequisites
- •
Azure CLI installed and authenticated (`az login`) - •
Terraform >= 1.5.0 - •
AzureRM provider >= 3.80
Template Code
# ─────────────────────────────────────────────────────────────────────────────
# Azure AKS Cluster with Managed Identity
# ─────────────────────────────────────────────────────────────────────────────
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.80"
}
}
}
provider "azurerm" {
features {}
}
variable "resource_group_name" {}
variable "location" { default = "East US" }
variable "cluster_name" { default = "my-aks-cluster" }
variable "kubernetes_version" { default = "1.28" }
variable "node_count" { default = 2 }
variable "vm_size" { default = "Standard_D2_v3" }
resource "azurerm_resource_group" "main" {
name = var.resource_group_name
location = var.location
}
resource "azurerm_kubernetes_cluster" "main" {
name = var.cluster_name
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
dns_prefix = var.cluster_name
kubernetes_version = var.kubernetes_version
default_node_pool {
name = "system"
node_count = var.node_count
vm_size = var.vm_size
# Enable autoscaler
enable_auto_scaling = true
min_count = 1
max_count = 5
}
identity {
type = "SystemAssigned"
}
network_profile {
network_plugin = "azure"
load_balancer_sku = "standard"
}
# Azure AD RBAC
azure_active_directory_role_based_access_control {
managed = true
}
tags = { Environment = "production" }
}
output "kube_config" { value = azurerm_kubernetes_cluster.main.kube_config_raw sensitive = true }
output "cluster_name" { value = azurerm_kubernetes_cluster.main.name }
Usage
az login terraform init terraform apply -var="resource_group_name=my-rg"