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

how to view attached ACR in AKS clusters in Azure

我尝试了 az aks showaz aks list 命令,但它们不显示附加的 ACR 的名称。 我 运行 使用 az aks update --attach-acr 附加 acr 的命令,它显示它已附加。

我可以通过 CLI 或 portal 看到 acr 在集群中吗?

恐怕您无法在集群 UI 门户中看到附加的 ACR。

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

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

您可以通过命令az aks list

获取关联到AKS集群的服务主体

见下图。 AcrPull 角色已分配给与 AKS 群集关联的服务主体。

如果您想使用 Azure CLI 检查哪个 ACR 附加到 AKS 群集。您可以列出所有 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>

实际上,命令中的参数--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 resource Id,我想你就清楚AKS附加了哪个ACR。

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

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

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