我一直在尝试通过 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 实例。