【问题标题】:How do I get my AKS cluster to authenticate to my ACR?如何让我的 AKS 群集向我的 ACR 进行身份验证?
【发布时间】:2020-11-05 14:41:08
【问题描述】:

几周前,我能够使用 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 &lt;acrName&gt; 之后,我也无法解决此问题。

让我的 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 代替名称。大约一分钟后,命令完成,甚至半小时后,我得到了同样的权限问题。

【问题讨论】:

  • 您如何将 AKS 链接到 ACR ?您是否在 az aks create 命令中使用 --attach-acr 参数?
  • 我在资源创建后使用了az aks update -n cluster_name -g resource_group --attach-acr acr_name

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


【解决方案1】:

将 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

【讨论】:

  • 我删除了我的集群并使用az aks create -g my_resourcegroup --name &lt;new_cluster_name&gt; --node-count 1 --generate-ssh-keys --enable-vmss --enable-cluster-autoscaler --min-count 1 --max-count 5 --service-principal &lt;my_service_principl_guid&gt; --client-secret &lt;my_secret&gt; --attach-acr &lt;my_acr&gt; 重新创建。部署到那个新集群也会出现同样的错误。
  • 可以不提供服务主体吗?并让 kubernetes 使用 MSI 功能为您管理一个
  • 在我之前的评论中省略命令中的--service-principal &lt;my_service_principl_guid&gt; --client-secret &lt;my_secret&gt; 不会改变任何东西。同样的错误。
  • 谢谢,我现在很好奇,因为这是基本的 AKS + ACR 集成,我会试一试并报告
猜你喜欢
  • 2020-11-07
  • 2020-09-06
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多