如何在 Azure 的 AKS 集群中查看附加的 ACR
how to view attached ACR in AKS clusters in Azure
我尝试了 az aks show
和 az 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
。
我尝试了 az aks show
和 az 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
见下图。 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
。