Развертывание из частного реестра контейнеров в локальную среду Kubernetes с помощью Реестр контейнеров Azure
Область применения: AKS в Azure Local 22H2, AKS на Windows Server
В этой статье описывается, как развернуть образы контейнеров из частного реестра контейнеров с помощью Реестр контейнеров Azure, которые можно запустить в собственном центре обработки данных в AKS, включенном развертываниями Azure Arc. Развертывание в локальном кластере Kubernetes, размещенном AKS. Реестр контейнеров Azure позволяет собирать и хранить артефакты и образы контейнеров в частном реестре для всех типов развертываний контейнеров.
В статье описывается, как создать частный реестр контейнеров в Azure и отправить образ контейнера в частный реестр контейнеров. Затем можно развернуть из частного реестра в локальный кластер Kubernetes, размещенный в AKS с поддержкой Arc.
Дополнительные сведения о реестре контейнеров в Azure см. в документации по Реестр контейнеров Azure.
Необходимые компоненты
Убедитесь, что у вас есть следующие требования:
- Базовое понимание концепций Kubernetes.
- Кластер AKS, работающий и работающий.
- Установленный Azure CLI
-
kubectl
Локальная среда, настроенная для указания кластера AKS. Для настройки кластера для доступа можно использоватьkubectl
PowerShell.
Создание частного реестра контейнеров в Azure
Чтобы создать реестр контейнеров, начните с группы ресурсов. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. Создайте группу ресурсов с помощью команды PowerShell az-group-create . В следующем примере создается группа ресурсов в регионе eastus :
az group create --name <RESOURCE_GROUP_NAME> --location eastus
Создайте экземпляр реестра контейнеров с помощью команды az acr create и укажите собственное имя реестра. Имя реестра должно быть уникальным в пределах Azure и содержать от 5 до 50 буквенно-цифровых символов. В остальной части этой статьи <acrName>
используется в качестве заполнителя для имени реестра контейнеров, но вы можете указать собственное уникальное имя реестра. Базовый номер SKU — это оптимизированная для затрат точка входа для целей разработки, которая обеспечивает баланс хранилища и пропускной способности:
az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic
После создания реестра контейнеров используйте следующую команду, чтобы создать субъект-службу, чтобы получить доступ к реестру контейнеров из Kubernetes:
az ad sp create-for-rbac
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RG_NAME>/providers/Microsoft.ContainerRegistry/registries/<REGISTRY_NAME>
--role Contributor
--name <SERVICE_PRINCIPAL_NAME>
Реестр контейнеров поддерживает три роли доступа. Роль участника чаще всего используется разработчиками приложений. Однако в реальных сценариях может потребоваться создать несколько субъектов-служб в зависимости от типа доступа:
- Участник. Эта роль предлагает отправку и доступ на вытягивание в репозиторий.
- Читатель: эта роль позволяет только доступ на вытягивание репозиторию.
- Владелец: эта роль позволяет назначать роли другим пользователям в дополнение к отправке и доступ на вытягивание репозиторию.
Предыдущая команда должна создать выходные данные, аналогичные следующему тексту:
{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
После успешного создания субъекта-службы скопируйте appId
и password
в безопасное расположение, чтобы использовать его позже в развертывании.
Дополнительные сведения о работе с субъектами-службами и реестром контейнеров см. в Реестр контейнеров Azure аутентификации с помощью субъектов-служб.
Вход в частный реестр контейнеров
Чтобы использовать экземпляр реестра контейнеров, необходимо сначала войти. Для входа можно использовать Azure CLI или Интерфейс командной строки Docker.
Вариант 1. Вход из Azure CLI
Используйте команду az acr sign in и укажите уникальное имя, назначенное реестру контейнеров на предыдущем шаге:
az acr login --name <REGISTRY_NAME>
Вариант 2. Вход из Интерфейса командной строки Docker
Чтобы использовать интерфейс командной строки Docker для доступа к реестру контейнеров, введите следующую команду в терминале Bash или PowerShell:
docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>
При любом варианте команда должна вернуть сообщение "Вход в успешно выполнено".
Отправка образа в реестр контейнеров
После успешного входа можно начать отправку образа в реестр контейнеров. Сначала выполните docker images
команду, чтобы просмотреть список образов на локальном компьютере:
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/azure-functions/dotnet 3.0 9f8ad1bdee67 5 months ago 540MB
poemfinder-app latest 2d9bef425603 6 months ago 208MB
Чтобы приступить к работе, пометьте образ с помощью docker tag
команды, а затем отправьте docker push
его в реестр контейнеров:
docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Убедитесь, что изображение правильно помечено, выполнив docker images
команду еще раз. После подтверждения выполните docker push
отправку в реестр контейнеров, как показано ниже:
docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Чтобы убедиться, что образ успешно отправлен в реестр контейнеров, выполните следующую команду:
az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table
Развертывание образа из реестра контейнеров в AKS
Чтобы развернуть образ контейнера из реестра контейнеров в кластере Kubernetes, создайте секреты Kubernetes для хранения учетных данных реестра. Kubernetes использует секрет для извлечения образа с целью хранения сведений, необходимых для проверки подлинности реестра. Чтобы создать секрет извлечения для реестра контейнеров, укажите идентификатор субъекта-службы, пароль и URL-адрес реестра:
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>
где:
значение | Описание |
---|---|
secret-name |
Имя изображения извлекает секрет, например acr-secret . |
namespace |
Пространство имен Kubernetes для вставки секрета в. Требуется только в том случае, если вы хотите поместить секрет в пространство имен, отличное от пространства имен по умолчанию. |
<REGISTRY_NAME> |
Имя реестра контейнеров; например, myregistry . Полное --docker-server имя сервера входа в реестр. |
appId |
Идентификатор субъекта-службы, который Kubernetes использует для доступа к реестру. |
password |
Пароль субъекта-службы. |
После создания секрета извлечения образа его можно использовать для создания модулей pod и развертываний Kubernetes. Укажите имя секрета imagePullSecrets
в файле развертывания, как показано в следующем примере:
apiVersion: v1
kind: Pod
metadata:
name: poemfinder-app
namespace: mydemoapps
spec:
containers:
- name: poemfinder-app
image: <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: acr-secret
В этом примере имя образа для poemfinder-app:v1.0
извлечения из реестра контейнеров и acr-secret
имя секрета извлечения, созданного для доступа к реестру. При развертывании модуля pod Kubernetes автоматически извлекает образ из реестра, если образ еще не присутствует в кластере.
Вы можете сохранить указанную выше конфигурацию pod в файле, например pod-example.yaml , а затем развернуть его в Kubernetes следующим образом:
kubectl create -f pod-example.yaml
Чтобы убедиться, что модуль pod был успешно создан с помощью образа контейнера из реестра контейнеров, выполните команду kubectl describe pod <POD_NAME>
, которая должна показать образ контейнера, используемый для создания модуля pod.
Следующие шаги
Из этой статьи вы узнали, как развернуть образ контейнера из Реестр контейнеров Azure в AKS Arc. Далее можно: