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

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

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

Error :- Failed to pull image "xx.azurecr.io/xx:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://xx.azurecr.io/v2/xx/manifests/latest: unauthorized: authentication required

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

Вы уверены, что это тот же субъект службы, которому вы предоставили доступ?

4c74356b41 08.04.2019 14:59

да я проверил @4c74356b41

Priyanka 08.04.2019 15:00

можете предоставить доказательства?

4c74356b41 08.04.2019 15:00

это не означает, что AKS использует SP. вы можете использовать az aks show -n xxx -g yyy для проверки AKS SP

4c74356b41 08.04.2019 15:20

az aks show --resource-group rg-000 --name demo-cluster --query "servicePrincipalProfile" -o json { "clientId": "0173xxxxxxxxxxxxx" }

Priyanka 08.04.2019 16:02

тот же идентификатор клиента принадлежит SP в IAM консоли ACR: с доступом acrPull

Priyanka 08.04.2019 16:06
Применение градиента к изображению с помощью CSS
Применение градиента к изображению с помощью CSS
Здравствуйте, братья и сестры, как дела? Недавно я застрял на применении градиента к изображению. Я применял это много раз, но иногда наши требования...
Получение URL-адреса изображения курса в Moodle с помощью PHP
Получение URL-адреса изображения курса в Moodle с помощью PHP
Moodle - это популярная система управления обучением с открытым исходным кодом, используемая многими учебными заведениями и организациями по всему...
4
6
7 475
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

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

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

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

SP_ID зависит от способа, который вы использовали.

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

  1. Выполните команду «az aks show -n имя-кластера-aks-g имя-группы-ресурсов | клиент grep».

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

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

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

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

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

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

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