kubernetes 如何使用ArgoCD中的AKS托管身份连接到ACR?

kxxlusnw  于 2022-12-29  发布在  Kubernetes
关注(0)|答案(1)|浏览(203)

我想使用用户为AKS和ArgoCD分配或管理的身份来创建应用程序。
我在ACR上为AKS标识分配了AcrPull,然后尝试使用

argocd repo add myACR.azurecr.io --type helm --name helm --enable-oci

helm是我在那里的repos的根。它工作正常,我可以在argocd用户界面的连接状态中看到一个绿色的"成功"勾号。
但当我尝试为其中一个实际图像创建应用程序时,它失败了,并显示
helm pull oci://myACR.azurecr.io/helm/mychart --version 0.0.1 --destination /tmp/helm706383544
失败退出状态1:错误:授权失败:无法获取匿名令牌:意外状态:401未授权
(on旁注,如果我启用admin用户并使用--username XXX --password XXX选项创建argocd repo,则一切都按预期工作)
我错过了什么?有没有可能实现这一点?或者我需要在ACR上启用管理员用户(或者使用令牌?)

rsl1atfo

rsl1atfo1#

当您说AKS身份,并意味着用户管理的身份,那么它在这种情况下是错误的。
要访问ACR,您需要为AKS的kubelet身份分配AcrPull角色,因为kubelet负责拉取图像:

export KUBE_ID=$(az aks show -g <resource group> -n <aks cluster name> --query identityProfile.kubeletidentity.objectId -o tsv)
export ACR_ID=$(az acr show -g <resource group> -n <acr name> --query id -o tsv)
az role assignment create --assignee $KUBE_ID --role "AcrPull" --scope $ACR_ID

但这只是Kubernetes提取图像的一部分,我不认为ArgoCD开箱即用就能利用Azure身份来连接到你的repo。
因此,您可能需要指定用户名和密码,以便ArgoCD可以连接到helm repo:

argocd repo add myACR.azurecr.io --type helm --name helm --enable-oci --username <username> --password <password>

相关问题