gpt4 book ai didi

azure - AKS 群集托管标识中的 Nginx 服务无权读取 publicIPAddresses

转载 作者:行者123 更新时间:2023-12-02 08:25:36 26 4
gpt4 key购买 nike

我正在通过 Azure CLI 创建 AKS 群集。

类似于:

az aks create 
--resource-group RESOURCE-GROUP
--name "mycluster"
--enable-managed-identity
--network-plugin "azure"
--no-ssh-key
...

创建后,我获得了托管身份mycluster-agentpool。我已将该身份添加到 PublicIP 所在的资源组中的“网络贡献者”角色。我等了一个多小时。

但我仍然从 nginx 服务收到此错误:

network.PublicIPAddressesClient#List: Failure responding to request: StatusCode=403 -- 
Original Error: autorest/azure: Service returned an error.
Status=403
Code="AuthorizationFailed"
Message="The client '00000000-0000-0000-0000-00000000' with object id '00000000-0000-0000-0000-00000000' does not have authorization to perform action
'Microsoft.Network/publicIPAddresses/read' over scope
'/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/RESOURCE-GROUP/providers/Microsoft.Network' or the scope is invalid.
If access was recently granted, please refresh your credentials."

我觉得奇怪的是,创建集群并查询“身份”后:

az aks show -g RESOURCE-GROUP -n mycluster --query "identity"

我得到(示例 GUID):

{
"principalId": "00000000-1234-1234-1234-00000000",
"tenantId": "00000000-5678-5678-5678-00000000",
"type": "SystemAssigned",
"userAssignedIdentities": null
}

这个principalId与mycluster-agentpool身份的ObjectId不匹配,我找不到它所属的任何地方,因为我怀疑principalId是需要权限的身份。

nginx 服务尝试以什么身份进行连接?

最佳答案

根据研究,我发现当您为 AKS 启用托管身份时,AKS 的属性会显示带有 MSI 的 servicePrincipalProfile。当您想要关联另一个资源组中的公共(public) IP 地址时,您需要将“网络贡献者”角色授予 AKS 的托管身份,您可以通过 CLI 获取主体 Id,如下所示:

az aks show -g RESOURCE-GROUP -n mycluster --query "identity.principalId"

您将获得有关托管身份的更多详细信息 here为“网络贡献者”。它显示控制平面的身份管理网络资源,包括入口负载均衡器和 AKS 管理的公共(public) IP。上面的 CLI 命令向您显示了控制平面的身份。

此主体 Id 是一个对象 Id,您可以通过 CLI 获取服务主体,如下所示:

az ad sp show --id principalId

关于azure - AKS 群集托管标识中的 Nginx 服务无权读取 publicIPAddresses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64934205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com