如何通过Terraform为AKS默认节点池VMSS配置系统分配身份
为AKS节点池VMSS配置系统分配身份以访问KeyVault
你当前配置里的顶层identity块是给AKS控制平面设置的系统身份,和节点池的VMSS完全无关。要给节点池对应的VMSS配置系统分配身份,需要在节点池的配置块内单独添加identity设置:
修改后的Terraform配置
resource "azurerm_kubernetes_cluster" "intellidoc_aks" { resource_group_name = var.resource_name location = var.location name = var.cluster_name dns_prefix = var.dns_prefix default_node_pool { name = "workernode" vm_size = "Standard_DS2_v2" node_count = var.agent_count vnet_subnet_id = var.aks_subnet_id os_disk_size_gb = 30 max_pods = 100 enable_auto_scaling = true min_count = 1 max_count = 3 # 给节点池VMSS添加系统分配身份 identity { type = "SystemAssigned" } } # 此为AKS控制平面的身份,与节点池无关 identity { type = "SystemAssigned" } linux_profile { admin_username = "xyz" ssh_key { key_data = var.ssh_key } } network_profile { network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/16" network_policy = "azure" load_balancer_sku = "standard" } private_cluster_enabled = true }
后续操作
- 获取VMSS的对象ID:
- 通过Terraform输出获取:
output "node_pool_identity_object_id" { value = azurerm_kubernetes_cluster.intellidoc_aks.default_node_pool[0].identity[0].principal_id } - 或用Azure CLI查询:
az aks show --resource-group <你的资源组名> --name <你的AKS集群名> --query "agentPoolProfiles[0].identity.principalId" -o tsv
- 通过Terraform输出获取:
- 给VMSS身份分配KeyVault权限:
在KeyVault的访问策略中,添加上述对象ID,授予所需权限(比如密钥/机密/证书的Get权限)。
内容的提问来源于stack exchange,提问作者Amit Gujar
相关产品推荐
相关产品推荐

