You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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
}

后续操作

  1. 获取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
      
  2. 给VMSS身份分配KeyVault权限:
    在KeyVault的访问策略中,添加上述对象ID,授予所需权限(比如密钥/机密/证书的Get权限)。

内容的提问来源于stack exchange,提问作者Amit Gujar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:45:13