Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании реестра контейнеров Azure (ACR) со службой Azure Kubernetes (AKS) необходимо установить механизм проверки подлинности. Вы можете настроить необходимые разрешения между ACR и AKS с помощью Azure CLI, Azure PowerShell или портала Azure. В этой статье приведены примеры настройки проверки подлинности между этими службами Azure с помощью Azure CLI или Azure PowerShell.
Интеграция AKS с ACR назначает роль AcrPullуправляемому удостоверению Microsoft Entra ID, связанному с пулом агентов в кластере AKS. Дополнительные сведения об управляемых удостоверениях AKS см. в сводке управляемых удостоверений.
Important
При присоединении ACR возникает проблема с задержкой в группах Microsoft Entra. Если роль AcrPull предоставляется группе Microsoft Entra, а удостоверение kubelet добавляется в группу для завершения конфигурации RBAC, может возникнуть задержка до того, как группа RBAC вступит в силу. Если выполняется автоматизация, требующая завершения настройки RBAC, рекомендуется использовать собственное удостоверение kubelet в качестве обходного решения. Вы можете предварительно создать удостоверение, назначаемое пользователем, добавить его в группу Microsoft Entra, а затем использовать удостоверение в качестве удостоверения kubelet для создания кластера AKS. Это гарантирует, что удостоверение добавляется в группу Microsoft Entra до создания маркера kubelet, что позволяет избежать проблемы с задержкой.
Note
В этой статье рассматривается автоматическая проверка подлинности между AKS и ACR. Если вам нужно извлечь образ из частного внешнего реестра, используйте секрет извлечения образа.
Caution
Интеграция с AKS-ACR через az aks --attach-acr не поддерживается для реестров ACR с поддержкой ABAC, где настройки разрешений назначения ролей установлены на "RBAC Registry + ABAC Repository Permissions". Реестры ACR с поддержкой ABAC требуют Container Registry Repository Reader роль вместо AcrPull роли для предоставления разрешений на извлечение изображений. Для реестров ACR с поддержкой ABAC не следует использовать az aks --attach-acr, а вместо этого вручную назначить роль с помощью портала Azure, CLI или Azure Resource Manager.
https://aka.ms/acr/auth/abac Дополнительные сведения о реестрах ACR с поддержкой ABAC см. в статье .
Перед тем как начать
- Вам нужна роль владельца, администратора учетной записи Azure или соадминистратора Azure в подписке Azure.
- Чтобы избежать необходимости в одной из этих ролей, вместо этого можно использовать существующее управляемое удостоверение для проверки подлинности ACR из AKS. Дополнительные сведения см. в статье "Использование управляемого удостоверения Azure для проверки подлинности в ACR".
- Если вы используете Azure CLI, в этой статье требуется, чтобы вы работали с Azure CLI версии 2.7.0 или более поздней. Чтобы узнать версию, выполните команду
az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI". - Если вы используете Azure PowerShell, в этой статье требуется, чтобы вы работали с Azure PowerShell версии 5.9.0 или более поздней. Чтобы узнать версию, выполните команду
Get-InstalledModule -Name Az. Если вам необходимо выполнить установку или обновление, см. статью об установке Azure PowerShell. - Примеры и синтаксис для использования Terraform для настройки ACR можно найти в справочнике Terraform.
Создание нового ACR
Если у вас еще нет ACR, создайте его с помощью
az acr createкоманды. В следующем примере переменная задаетMYACRимя ACR, mycontainerregistry и использует переменную для создания реестра. Имя ACR должно быть глобально уникальным и использовать только строчные буквы.MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
Создание кластера AKS и интеграция с существующим ACR
Создайте новый кластер AKS и интегрируйте с существующим ACR с помощью
az aks createкоманды с параметром--attach-acr. Эта команда позволяет авторизовать существующий ACR в подписке и настроить соответствующую роль AcrPull для управляемого удостоверения.MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACRЭта команда может занять несколько минут.
Note
Если вы используете 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 с помощью
az aks updateкоманды с--attach-acrпараметром и допустимым значением 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>Note
Команда
az aks update --attach-acrиспользует разрешения пользователя, выполняющего команду, для создания назначения роли ACR. Эта роль назначается управляемому удостоверению kubelet . Дополнительные сведения об управляемых удостоверениях AKS см. в сводке управляемых удостоверений.
Отключение ACR из кластера AKS
Удалите интеграцию между ACR и кластером AKS с помощью
az aks updateкоманды с--detach-acrпараметром и допустимым значением 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команды.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Запустите развертывание в кластере
kubectl applyAKS с помощью команды.kubectl apply -f acr-nginx.yamlМониторинг развертывания с помощью
kubectl get podsкоманды.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
Troubleshooting
- Проверка доступности реестра из кластера AKS с помощью
az aks check-acrкоманды. - Дополнительные сведения о мониторинге ACR.
- Дополнительные сведения о работоспособности ACR.