不同资源组的私有aks和acr

Private aks and acr in different resource group

我想要一个零信任的基础设施,所以我需要 aksacr 完全独立,并且只需要一个连接来拉取图像。我通过 azure 门户创建了一个私有 aks(为其分配特定 vnet),并创建了一个私有 acr(没有主体服务)。然后我在 acr 访问角色中为 aks 添加 acrPull 角色,然后我通过它们之间 acr 的网络部分添加私人访问。不幸的是,当我尝试 az aks check-acr 命令时 returns:

Validating image pull permission: FAILED
[2022-01-19T14:00:37Z] ACR containerregistrymaryam.azurecr.io rejected token exchange: ACR token exchange endpoint returned error status: 403. body:

当前权限和连接状态如下: 如果您有任何线索,请告诉我,谢谢!

您需要将角色 AcrPull 分配给节点池的 Kubelet 身份,而不是 AKS 身份:

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