Terraform 部署 Azure AKS 时如何将 UAMI 设置为 kubelet_identity
解决方案
当前AzureRM Terraform Provider完全支持你需要的配置:可独立指定kubelet专属UAMI,同时支持在控制平面UAMI之外额外分配UAMI用于ACR访问。
核心配置逻辑
- 单独创建kubelet专用UAMI,通过
kubelet_identity块绑定到AKS,实现控制平面身份和kubelet身份完全隔离 - 通过
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
相关产品推荐
相关产品推荐

