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

如何通过Terraform自行创建AGIC用户分配托管身份部署AKS集群

自定义AGIC用户分配托管身份部署AKS集群

问题背景

我通过Terraform部署带有AGIC入口控制器的AKS集群,要求集群运行涉及的所有身份必须为用户分配托管身份(UAMI),禁止Azure自动创建身份。目前已手动创建AGW、集群、kubelet的三个UAMI,部署可正常运行,但AGIC会在my_node_rg中自动生成名为ingressapplicationgateway...的额外UAMI。需自行创建该AGIC所需的UAMI,并在集群创建时直接分配给AGIC,避免自动生成。

解决方案

要实现需求,需手动创建AGIC专用UAMI,配置必要权限后,在AKS集群配置中指定该身份供AGIC使用。

步骤1:创建AGIC专用用户分配托管身份

添加Terraform资源定义AGIC的UAMI:

// AGIC专用的用户分配托管身份
resource "azurerm_user_assigned_identity" "my_agic_id" {
  name                = "my-agic-uami"
  resource_group_name = "你的目标资源组名称" // 可与集群/AGW同RG,也可独立设置
  location            = azurerm_kubernetes_cluster.my_cluster.location
}

步骤2:为AGIC身份分配应用网关管理权限

给该UAMI配置管理应用网关的权限(遵循最小权限原则,可按需调整角色):

// 分配应用网关Contributor权限给AGIC身份
resource "azurerm_role_assignment" "agic_agw_contributor" {
  scope                = azurerm_application_gateway.my_agw.id
  role_definition_name = "Contributor"
  principal_id         = azurerm_user_assigned_identity.my_agic_id.principal_id
}

步骤3:在AKS集群中指定AGIC使用自定义身份

修改AKS集群的ingress_application_gateway块,添加自定义身份配置:

resource "azurerm_kubernetes_cluster" "my_cluster" {
  (...)

  node_resource_group = "my_node_rg"

  network_profile {
    network_plugin = "azure"
    network_policy = "azure"
  }

  identity {
    type         = "UserAssigned"
    identity_ids = [azurerm_user_assigned_identity.my_cluster_id.id]
  }

  kubelet_identity {
    client_id                 = azurerm_user_assigned_identity.my_kubelet_id.client_id
    object_id                 = azurerm_user_assigned_identity.my_kubelet_id.principal_id
    user_assigned_identity_id = azurerm_user_assigned_identity.my_kubelet_id.id
  }

  ingress_application_gateway {
    gateway_id = azurerm_application_gateway.my_agw.id
    // 指定AGIC使用自定义UAMI
    identity {
      client_id                 = azurerm_user_assigned_identity.my_agic_id.client_id
      object_id                 = azurerm_user_assigned_identity.my_agic_id.principal_id
      user_assigned_identity_id = azurerm_user_assigned_identity.my_agic_id.id
    }
  }
}

注意事项

  • 确保AGIC的UAMI与AKS集群、应用网关处于同一Azure区域
  • 权限可根据实际需求精细化调整,例如使用Application Gateway Contributor角色替代全局Contributor
  • 部署时需保证角色分配完成后再创建AKS集群,避免AGIC启动阶段出现权限不足问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:32:39