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

Terraform 部署 Azure AKS 时如何将 UAMI 设置为 kubelet_identity

解决方案

当前AzureRM Terraform Provider完全支持你需要的配置:可独立指定kubelet专属UAMI,同时支持在控制平面UAMI之外额外分配UAMI用于ACR访问。

核心配置逻辑

  1. 单独创建kubelet专用UAMI,通过kubelet_identity块绑定到AKS,实现控制平面身份和kubelet身份完全隔离
  2. 通过acr_pull_identity_ids参数传入额外的UAMI ID,即可为AKS分配独立的ACR拉取身份,无需和控制平面、kubelet身份共用

完整配置示例

# 可根据实际情况用数据源调用已有UAMI,此处以新建为例
resource "azurerm_user_assigned_identity" "aks_kubelet" {
  name                = "aks-kubelet-uami"
  resource_group_name = var.rg_name
  location            = var.location
}

resource "azurerm_user_assigned_identity" "aks_acr_pull" {
  name                = "aks-acr-pull-uami"
  resource_group_name = var.rg_name
  location            = var.location
}

resource "azurerm_kubernetes_cluster" "main" {
  name                = "demo-aks-cluster"
  resource_group_name = var.rg_name
  location            = var.location
  dns_prefix          = "demo-aks"

  # 控制平面UAMI配置,和kubelet身份完全独立
  identity {
    type         = "UserAssigned"
    identity_ids = [var.control_plane_uami_id]
  }

  # 绑定自定义kubelet UAMI,对应BYO kubelet MI配置要求
  kubelet_identity {
    client_id                 = azurerm_user_assigned_identity.aks_kubelet.client_id
    object_id                 = azurerm_user_assigned_identity.aks_kubelet.principal_id
    user_assigned_identity_id = azurerm_user_assigned_identity.aks_kubelet.id
  }

  # 额外分配UAMI用于ACR访问,支持传入多个ID
  acr_pull_identity_ids = [azurerm_user_assigned_identity.aks_acr_pull.id]

  default_node_pool {
    name       = "default"
    node_count = 3
    vm_size    = "Standard_DS2_v2"
  }

  # 其余网络、RBAC等配置按需补充
}

注意事项

  • 需使用AzureRM Provider 3.0及以上版本,低版本未开放kubelet_identity和acr_pull_identity_ids参数
  • 若无需独立的ACR拉取身份,可直接将kubelet UAMI ID填入acr_pull_identity_ids,提前为该UAMI授予对应ACR的AcrPull角色权限即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:45:00