如何使我的AKS集群向我的ACR进行身份验证?

时间:2020-07-16 01:26:35

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

几周前,我能够使用Azure CLI创建我的容器注册表(ACR)和Kubernetes(AKS)群集。我可以将图像推送到我的ACR并让AKS成功提取图像-一切正常。有时,我不得不用az acr login --name <acrName>刷新登录信息,但这没什么大不了的。

今天,我发现当我将更新的映像部署到我的AKS群集时,我的状态为ImagePullBackOff

无法提取映像“ MY_ACR.azurecr.io/MY_IMAGE:v1”:rpc错误:代码=未知desc =来自守护程序的错误响应:获取https://MY_ACR.azurecr.io/v2/MY_IMAGE/manifests/v1:未授权:需要身份验证,请访问https://aka.ms/acr/authorization有关更多信息。

我不记得要做这项工作需要做些什么,因此我经历了最初的步骤,并创建了一个全新的资源组,ACR,AKS集群以及连接它们的服务主体。我将图像推送到我的ACR,并且能够应用我的Kubernetes清单,然后一切又恢复了。

几个小时后,当我应用更新的清单时,我再次收到相同的错误消息。作为设置的一部分,我创建了一个服务主体:

az ad sp create-for-rbac --skip-assignment
az role assignment create --assignee <principal's appId> --scope <my ACR's id> --role Reader

我还使用了--role acrpull。认证似乎已超时,Authenticate with an Azure container registry的文档说单个AD身份将在3个小时后超时,但是即使运行了az acr login --name <acrName>,我也无法解决此问题。

要使我的AKS群集能够再次向我的ACR进行身份验证,需要执行哪些步骤?

我会注意到,我还通过运行以下命令根据Authenticate with Azure Container Registry from Azure Kubernetes Service上的文档附加了ACR:

az aks update -n cluster_name -g resource_group --attach-acr acr_name 

我还尝试使用ACR ID代替名称。一分钟左右后,命令完成,甚至半个多小时后,我也遇到了相同的权限问题。

1 个答案:

答案 0 :(得分:0)

将AKS与ACR集成的最简单方法是在群集创建过程中利用--attach-acr选项。这将使AKS管理您的服务主体并处理令牌刷新的

https://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration#create-a-new-aks-cluster-with-acr-integration