Azure 即使授予了权限,AKS也无法从ACR中提取

Azure 即使授予了权限,AKS也无法从ACR中提取,azure,docker,kubernetes,azure-aks,Azure,Docker,Kubernetes,Azure Aks,我遵循了提供ACR访问AKS的文档:但我仍然得到了身份验证失败错误。有人能帮我吗 env: - name: no_cpu valueFrom: resourceFieldRef: containerName: proxy resource: requests.cpu imagePullSecrets: - name: acr-auth 您需要从pod\deployment定义中删除imagepullsecrets属性。这样,您将指示kubernetes使用内

我遵循了提供ACR访问AKS的文档:但我仍然得到了身份验证失败错误。有人能帮我吗

env:
- name: no_cpu
  valueFrom:
    resourceFieldRef:
      containerName: proxy
      resource: requests.cpu
imagePullSecrets:
- name: acr-auth

您需要从pod\deployment定义中删除
imagepullsecrets
属性。这样,您将指示kubernetes使用内部aks\acr auth

确保您在acr资源(从门户、IAM选项卡或使用脚本)上为aks SP分配了
acrpull
角色:

#!/bin/bash

AKS_RESOURCE_GROUP=myAKSResourceGroup
AKS_CLUSTER_NAME=myAKSCluster
ACR_RESOURCE_GROUP=myACRResourceGroup
ACR_NAME=myACRRegistry

# Get the id of the service principal configured for AKS
CLIENT_ID=$(az aks show --resource-group $AKS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME --query "servicePrincipalProfile.clientId" --output tsv)

# Get the ACR registry resource id
ACR_ID=$(az acr show --name $ACR_NAME --resource-group $ACR_RESOURCE_GROUP --query "id" --output tsv)

# Create role assignment
az role assignment create --assignee $CLIENT_ID --role acrpull --scope $ACR_ID
)

然后通过命令行创建pull secret:

kubectl create secret docker-registry acr-auth --docker-server <acr-login-server> --docker-username <service-principal-ID> --docker-password <service-principal-password> --docker-email <email-address>
kubectl创建秘密docker注册表acr auth--docker服务器--docker用户名--docker密码--docker电子邮件

apiVersion:v1 种类:秘密 元数据: 姓名:acr auth 类型:docker注册表 数据: 用户名: 密码:
两者都是等效的。

文档提供了两种不同的方式,那么您使用哪种方式?我重新创建了角色并修复了问题如果我删除了该角色,即使给予aks从ACR中提取的权限,我仍然会收到auth错误这是不可能的,您将权限分配给了错误的实体是的,我已分配了角色,但身份验证错误仍然存在。@SaiPrasanth那么您如何创建该秘密?命令行或YAML文件?两者都是等效的:kubectl create secret docker registry acr auth--docker server--docker username--docker password--docker email或apiVersion:v1种类:秘密元数据:名称:acr auth类型:docker注册表数据:用户名:密码:
apiVersion: v1
kind: Secret
metadata:
  name: acr-auth
type: docker-registry
data:
  username: <base64encoded username>
  password: <base64encoded password>