如何在Azure中的AKS群集中查看附加的ACR

时间:2020-10-23 20:06:50

标签: azure kubernetes azure-devops azure-container-registry

我尝试了az aks show和az aks list命令,但是它们不显示附加的ACR的名称 我运行了使用az aks update --atach-acr附加acr的命令,它显示出附加的内容。

AFter running the az aks update

我可以通过CLI或门户网站看到acr在集群中吗?

3 个答案:

答案 0 :(得分:0)

恐怕您在群集UI门户中看不到所附的ACR。

使用az aks update --atach-acr命令将ACR附加到AKS群集时。

它刚刚将ACR的AcrPull角色分配给了与AKS群集关联的服务主体。有关更多信息,请参见here

您可以通过命令az aks list

获得与AKS群集关联的服务主体。

enter image description here

请参见以下屏幕截图。 AcrPull角色已分配给与AKS群集关联的服务主体。

enter image description here

如果要使用Az cli检查哪个ACR附加到AKS群集。您可以列出所有ACR。然后遍历ACR,检查哪个ACR已将AcrPull角色分配给了Aks服务主体。参见以下示例:

# list all the ACR and get the ACR id
az acr list


az role assignment list --assignee <Aks service principal ID> --scope <ACR ID>

答案 1 :(得分:0)

实际上,命令中的参数--attach-acr仅将角色ACRPull授予AKS的服务主体。与以前没有任何区别。您只能看到AKS的服务主体。当前,如果您尚不知道ACR范围,则CLI命令az role assignment list无法直接获取ACR。但是您可以像这样首先获取主体ID:

az aks show --resource-group groupName --name aksName --query identityProfile.kubeletidentity.objectId

然后使用CLI命令获取ACR的资源ID:

az rest --method get --uri "https://management.azure.com/subscriptions/{subscription_id}/providers/Microsoft.Authorization/roleAssignments?api-version=2015-07-01" --uri-parameters "\$filter=principalId eq 'objectId'" --query "value[0].properties.scope"

如果您知道ACR资源ID,我想您清楚地知道哪个ACR附加到了AKS。

答案 2 :(得分:0)

az aks check-acr 命令检查某个 ACR 是否可从特定 AKS 获得。

您必须同时提供 ACR 和 AKS 作为参数,因此这不利于发现。

您可以围绕此构建一个小脚本,查询多个订阅的已注册 ACR(您不能将多个订阅参数传递给 az acr list --subscription,您必须逐一查询订阅),构建一个聚合表的 ACR 然后在循环中将这些值传递给 az aks check-acr