我一直在尝试通过 Terraform 管理 Azure Kubernetes 服务 (AKS) 实例。当我按照本 MS 教程通过 Azure CLI 创建 AKS 实例,然后按照本 MS 教程安装具有静态公共 IP 的入口控制器时,一切正常。此方法隐式创建服务主体 (SP)。
当我通过 Terraform 创建 AKS 集群的精确副本时,我被迫显式提供服务主体。我为这个新的 SP“贡献者”提供了对集群整个资源组的访问权限,当我进入创建入口控制器的步骤时(使用上面教程 2 提供的相同命令:)helm install stable/nginx-ingress --set controller.replicaCount=2 --set controller.service.loadBalancerIP="XX.XX.XX.XX",入口服务出现,但它从未启动获得其公共IP。IP 状态无限期地保持为“<pending>”,我在任何日志中都找不到任何有关原因的信息。是否有日志可以告诉我为什么我的 IP 仍处于待处理状态?
再次,我相当确定,除了 SP 之外,Terraform AKS 集群是基于 MS 教程创建的集群的精确副本。运行terraform plan发现两者没有区别。有谁知道我的 AKS SP 可能需要什么权限或者我在这里可能还缺少什么?奇怪的是,我找不到通过 Azure 门户分配给隐式创建的主体的任何权限,但我想不出任何其他可能导致此行为的原因。
不确定这是否是一个转移注意力的问题,但其他用户在针对第二个教程提出的问题中抱怨了类似的问题。他们的修复似乎总是“拆除集群并重试”,但这在这种情况下不是可接受的解决方案。我需要一个可重现的工作集群,并且azurerm_kubernetes_cluster目前不允许使用隐式创建的 SP 构建 AKS 实例。
azure terraform service-principal terraform-provider-azure azure-aks