Azure AKS集群VMSS配置系统/用户托管身份遇阻求助
解决方案
你之前配置的identity块是用于AKS控制平面的托管身份,而非节点池VMSS的身份,这是核心误区。要给节点池的VMSS配置系统分配+用户分配托管身份,需要在default_node_pool块内部添加identity配置,而非集群级别的identity块。
具体配置步骤
- 启用系统分配身份:在
default_node_pool内添加identity块,指定类型为SystemAssigned; - 叠加用户分配身份:将类型改为
SystemAssigned,UserAssigned,并传入用户分配身份的ID数组。
修改后的完整代码示例
resource "azurerm_kubernetes_cluster" "aks_cluster" { location = var.location name = "aks-${var.environment}-${var.region}-${var.aks_name}" resource_group_name = azurerm_resource_group.kubernetes_resource_group.name dns_prefix = "aks-${var.environment}-${var.region}-${var.aks_name}" kubernetes_version = data.azurerm_kubernetes_service_versions.current.latest_version node_resource_group = "${azurerm_resource_group.kubernetes_resource_group.name}-nrg" default_node_pool { name = "systempool" vm_size = "Standard_D2_V2" orchestrator_version = data.azurerm_kubernetes_service_versions.current.latest_version zones = [1] enable_auto_scaling = true min_count = 1 max_count = 2 os_disk_size_gb = 64 type = "VirtualMachineScaleSets" vnet_subnet_id = azurerm_subnet.system_pool_subnet.id node_labels = { "nodepool-type" = "System" "environment" = "${var.environment}" "nodepoolOS" = "linux" "app" = "System" } # 节点池VMSS的托管身份配置 identity { type = "SystemAssigned,UserAssigned" user_assigned_identity_ids = [data.azurerm_user_assigned_identity.user_assigned.id] } } # 若需为AKS控制平面配置托管身份,可保留此块(可选) # identity { # type = "UserAssigned" # user_assigned_identity_ids = [data.azurerm_user_assigned_identity.user_assigned.id] # } }
关键说明
- 节点池的
identity配置必须嵌套在default_node_pool(或自定义节点池)块内; user_assigned_identity_ids是数组类型,即使只有一个ID也要用[]包裹;- 若仅需系统分配身份,将
type设为SystemAssigned即可,无需指定user_assigned_identity_ids; - 集群级别的
identity块仅控制AKS控制平面的身份,与节点池VMSS无关,按需保留。
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

