Не удалось получить изображение "xx.azurecr.io/xx:latest": ошибка rpc: code = Unknown desc = Ответ об ошибке от демона: неавторизован: требуется аутентификация

Мои ACR и AKS находятся в одном каталоге Azure с одинаковой подпиской.

После того, как ACR Pull получил доступ к моему Принципалу обслуживания, ничего не работало и все еще получаю эту ошибку.

Ошибка:- Не удалось получить изображение "xx.azurecr.io/xx:latest": ошибка rpc: code = Unknown desc = Ответ об ошибке от демона: Получить https://xx.azurecr.io/v2/xx/manifests/latest: unauthorized: требуется аутентификация

скриншот приборной панели

1 ответ

Решение

Из сообщения об ошибке видно, что вы не проходите проверку подлинности, чтобы извлечь изображение из реестра Azure Container.

Для AKS есть два способа получить разрешение на извлечение образа из реестра контейнеров Azure.

Одним из них является предоставление разрешения субъекту службы, используемому кластером AKS. Вы можете получить детали в Grant AKS для доступа к ACR. Таким образом, вам нужен только один участник службы.

Другой - это предоставление разрешения новому принципалу службы, который отличается от того, который использовал AKS. Затем вы создаете секрет с принципалом службы, чтобы вытащить образ. Вы можете получить подробности в Access с Kubernetes Secret.

Это два разных способа, поэтому вы должны убедиться, что в ваших шагах нет ошибок. Чтобы проверить назначение роли для участника службы, введите следующую команду CLI:

az role assignment list --assignee $SP_ID --role acrpull --scope $ACR_ID

SP_ID зависит от того, как вы использовали.

У нас была другая причина этой ошибки: по умолчанию принципал службы, созданный с помощью кластеров AKS, истекает через год. Инструкции на https://docs.microsoft.com/en-us/azure/aks/update-credentials показывают, как обновить или создать нового участника.

Принципал службы, под которым работал кластер, не является тем принципалом, который я думал. Чтобы проверить это, выполните следующие действия.

  1. Выполните команду "az aks show -n aks-cluster-name -g resource-group-name | grep client"

  2. Запустите запятую "az ad sp credential list --id " - эта команда проверяет, связан ли секрет.

  3. Войдите на лазурный портал.

  4. Перейдите в реестр контейнеров Azure

  5. IAM -> Просмотреть назначение ролей -> Проверить, существует ли идентификатор клиента в списке с минимальным доступом "AcrPull". Если нет, предоставьте доступ к SP.

Пожалуйста, проверьте в YAML, видим ли мы правильную аутентификацию или нет.

Другие вопросы по тегам