Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании Реестр контейнеров Azure (ACR) со службой Azure Kubernetes (AKS) необходимо установить механизм проверки подлинности. Вы можете настроить необходимые разрешения между ACR и AKS с помощью Azure CLI, Azure PowerShell или портала #REF!. В этой статье приведены примеры настройки проверки подлинности между этими службами #REF! с помощью Azure CLI или Azure PowerShell.
Интеграция AKS с ACR назначает роль AcrPull управляемой идентичности Microsoft Entra ID , связанной с пулом агентов в вашем кластере AKS. Дополнительные сведения об управляемых удостоверениях AKS см. в разделе «Сводка по управляемым удостоверениям».
Важный
При присоединении ACR возникает проблема с задержкой в группах #REF!. Если роль AcrPull предоставлена группе #REF!, а удостоверение kubelet добавлено в группу для завершения настройки RBAC, может возникнуть задержка до того момента, как настройки группы RBAC начнут действовать. Если вы используете автоматизацию, которая требует завершения настройки RBAC, мы рекомендуем использовать Bring your own kubelet identity в качестве обходного решения. Вы можете предварительно создать назначенную пользователем идентичность, добавить её в группу #REF!, а затем использовать идентичность в качестве идентичности kubelet для создания кластера AKS. Это гарантирует, что идентификатор добавляется в группу в #REF! перед генерацией токена в kubelet, что позволяет избежать проблемы с задержкой.
Примечание
В этой статье рассматривается автоматическая проверка подлинности между AKS и ACR. Если вам нужно извлечь образ из частного внешнего реестра, используйте секрет извлечения образа.
Caution
Интеграция с AKS-ACR через не поддерживается для реестров ACR с поддержкой ABAC, где настройки разрешений назначения ролей установлены на "RBAC Registry + ABAC Repository Permissions". Реестры ACR с поддержкой ABAC требуют роль вместо роли для предоставления разрешений на извлечение изображений. Для реестров ACR с поддержкой ABAC не следует использовать az aks --attach-acr, но вместо этого вручную назначьте назначение роли Container Registry Repository Reader с помощью портала #REF!, az role assignment CLI или Azure Resource Manager. Дополнительные сведения о реестрах ACR с поддержкой ABAC см. в статье .
Перед тем как начать
- Вам потребуется Владелец, администратор учетной записи #REF! или соадминистратор #REF! в подписке #REF!.
- Чтобы избежать необходимости в одной из этих ролей, в качестве альтернативы можно использовать существующее управляемое удостоверение для проверки подлинности ACR от AKS. Дополнительные сведения см. в статье Использование управляемого удостоверения #REF! для проверки подлинности в ACR.
- Если вы используете Azure CLI, рекомендуется, чтобы вы работали с Azure CLI версии 2.7.0 или более поздней. Чтобы узнать версию, выполните команду . Если необходимо установить или обновить, см. раздел Install Azure CLI.
- Если вы используете Azure PowerShell, для применения этой статьи требуется, чтобы вы использовали Azure PowerShell версии не ниже 5.9.0. Чтобы узнать версию, выполните команду . Если необходимо установить или обновить, см. раздел Install Azure PowerShell.
- Примеры и синтаксис для использования Terraform для настройки ACR можно найти в справочнике Terraform.
Создание нового ACR
Если у вас еще нет ACR, создайте его с помощью команды. В следующем примере переменной присваивается имя ACR — mycontainerregistry, и эта переменная используется для создания реестра. Имя ACR должно быть глобально уникальным и использовать только строчные буквы.
MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
Создание кластера AKS и интеграция с существующим ACR
Создайте новый кластер AKS и интегрируйте с существующим ACR с помощью команды с параметром. Эта команда позволяет авторизовать существующую ACR в вашей подписке и настраивает соответствующую роль AcrPull для управляемой идентичности.
MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACRЭта команда может занять несколько минут для завершения.
Примечание
Если вы используете ACR, расположенную в другой подписке из кластера AKS, или предпочитаете использовать идентификатор ресурса ACR вместо имени ACR, это можно сделать с помощью следующего синтаксиса:
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Настройка интеграции ACR для существующего кластера AKS
Присоединение ACR к существующему кластеру AKS
Интегрируйте существующий ACR с существующим кластером AKS, используя команду с параметром и допустимым значением acr-name или acr-resource-id.
# Attach using acr-name az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-name> # Attach using acr-resource-id az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-resource-id>Примечание
Команда использует разрешения пользователя, выполняющего команду, для создания назначения роли ACR. Эта роль назначается управляемой идентичности kubelet. Дополнительные сведения об управляемых удостоверениях AKS см. в сводке управляемых удостоверений.
Отсоединение ACR от кластера AKS
Удалите интеграцию между ACR и кластером AKS с помощью команды с параметром и допустимым значением acr-name или acr-resource-id.
# Detach using acr-name az aks update --name myAKSCluster --resource-group myResourceGroup --detach-acr <acr-name> # Detach using acr-resource-id az aks update --name myAKSCluster --resource-group myResourceGroup --detach-acr <acr-resource-id>
Работа с ACR и AKS
Импорт изображения в ACR
Импортируйте изображение из Docker Hub в ACR с помощью команды
az acr import.az acr import --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
Развертывание примера образа из ACR в AKS
Убедитесь, что у вас есть правильные учетные данные AKS с помощью команды.
az aks get-credentials --resource-group myResourceGroup --name myAKSClusterСоздайте файл с именем acr-nginx.yaml , используя следующий пример YAML и замените acr-name именем ACR .
apiVersion: apps/v1 kind: Deployment metadata: name: nginx0-deployment labels: app: nginx0-deployment spec: replicas: 2 selector: matchLabels: app: nginx0 template: metadata: labels: app: nginx0 spec: containers: - name: nginx image: <acr-name>.azurecr.io/nginx:v1 ports: - containerPort: 80Запустите развертывание в кластере AKS с помощью команды.
kubectl apply -f acr-nginx.yamlПроведите мониторинг развертывания с помощью команды.
kubectl get podsВыходные данные должны отображать два запущенных модуля pod, как показано в следующем примере выходных данных:
NAME READY STATUS RESTARTS AGE nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
Устранение неисправностей
- Проверка доступности реестра из кластера AKS с помощью команды.
- Дополнительные сведения о мониторинге ACR.
- Узнайте больше о состоянии здоровья ACR.