Извлечение изображений в приложениях-контейнерах Azure с использованием управляемого удостоверения

Вы можете извлекать изображения из частных репозиториев в Microsoft Реестр контейнеров Azure с помощью управляемых удостоверений для проверки подлинности, чтобы избежать использования учетных данных администратора. Для проверки подлинности с помощью Реестр контейнеров Azure можно использовать назначаемое системой или назначаемое пользователем управляемое удостоверение.

При использовании управляемого удостоверения, назначаемого системой, удостоверение создается и управляется приложениями контейнеров Azure. Удостоверение привязано к приложению контейнера и удаляется при удалении приложения. При использовании управляемого удостоверения, назначаемого пользователем, вы создаете удостоверение за пределами приложений контейнеров Azure и управляете им. Его можно назначить нескольким ресурсам Azure, включая приложения контейнеров Azure.

Приложения-контейнеры проверка для новой версии образа при каждом запуске контейнера. В терминологии Docker или Kubernetes приложения контейнеров задают политику alwaysизвлечения изображений каждого контейнера.

В этой статье описывается, как использовать портал Azure для настройки приложения контейнера для использования управляемых удостоверений, назначенных пользователем и назначаемых системой, для извлечения образов из частных репозиториев Реестр контейнеров Azure.

Управляемое удостоверение, назначаемое пользователем

Ниже описан процесс настройки приложения контейнера для использования управляемого удостоверения, назначаемого пользователем, для извлечения изображений из частных репозиториев Реестр контейнеров Azure.

  1. Создайте приложение-контейнер с общедоступным изображением.
  2. Добавьте управляемое удостоверение, назначаемое пользователем, в приложение контейнера.
  3. Создайте редакцию приложения-контейнера с частным изображением и управляемым удостоверением, назначаемое пользователем.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской.

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

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

    az acr config authentication-as-arm show -r <REGISTRY>
    

    Если маркеры ARM запрещены, их можно разрешить с помощью следующей команды:

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • Создайте управляемое удостоверение, назначаемое пользователем. Дополнительные сведения см. в статье "Создание управляемого удостоверения, назначаемого пользователем".

Создание приложения-контейнера

Выполните следующие действия, чтобы создать приложение-контейнер с изображением краткого руководства по умолчанию.

  1. Перейдите на домашнюю страницу портала.

  2. Введите Приложения-контейнеры в строке поиска вверху.

  3. В результатах поиска выберите Приложения-контейнеры.

  4. Выберите кнопку Создать.

  5. На вкладке Основы выполните следующие действия.

    Параметр Действие
    Подписка Выберите свою подписку Azure.
    Группа ресурсов Выберите существующую группу ресурсов или создайте новую.
    Имя приложения контейнера Введите имя приложения контейнера.
    Местонахождение Выберите расположение.
    Создание среды приложения-контейнера Создайте новую или выберите существующую среду.
  6. Нажмите кнопку "Просмотр и создание " в нижней части страницы "Создать приложение контейнера".

  7. Нажмите кнопку "Создать " в нижней части окна "Создать приложение контейнера".

Разрешите несколько минут завершения развертывания приложения-контейнера. По завершении развертывания выберите элемент Перейти к ресурсу.

Добавление управляемого удостоверения, назначаемого пользователем

  1. Выберите удостоверение в меню слева.
  2. Выберите вкладку Назначено пользователем.
  3. Нажмите кнопку "Добавить назначенное пользователем управляемое удостоверение ".
  4. Выберите свою подписку.
  5. Выберите созданное удостоверение.
  6. Выберите Добавить.

Создание редакции приложения-контейнера

Создайте редакцию приложения-контейнера с частным изображением и управляемым удостоверением, назначаемое системой.

  1. Выберите "Управление редакциями " в меню слева.

  2. Выберите "Создать новую версию".

  3. Выберите образ контейнера из таблицы образов контейнера.

  4. Введите сведения в диалоговом окне "Изменение контейнера ".

    Поле Действие
    Имя Введите имя контейнера.
    Источник образа Выберите Реестр контейнеров Azure.
    Аутентификация Выберите управляемое удостоверение.
    Identity Выберите удостоверение, созданное в раскрывающемся меню.
    Реестр Выберите реестр, который вы хотите использовать в раскрывающемся меню.
    Изображение Введите имя изображения, которое вы хотите использовать.
    Тег изображения Введите имя и тег изображения, которое вы хотите извлечь.

    Screen shot of the Edit a container dialog entering user assigned managed identity.

    Примечание.

    Если учетные данные администратора не включены в реестре Реестр контейнеров Azure, отобразится предупреждение, и вам потребуется ввести имя изображения и сведения тега вручную.

  5. Выберите Сохранить.

  6. Выберите "Создать" на странице "Создание и развертывание новой редакции".

Будет создана и развернута новая редакция. Портал автоматически попытается добавить acrpull роль в управляемое удостоверение, назначаемое пользователем. Если роль не добавлена, ее можно добавить вручную.

Вы можете убедиться, что роль была добавлена, проверка удостоверение из области удостоверений страницы приложения контейнера.

  1. Выберите удостоверение в меню слева.
  2. Выберите вкладку Назначено пользователем.
  3. Выберите управляемое удостоверение, назначаемое пользователем.
  4. Выберите назначения ролей Azure в меню на странице ресурса управляемого удостоверения.
  5. Убедитесь, что acrpull роль назначена управляемому удостоверению, назначенному пользователем.

Создание приложения-контейнера с частным изображением

Если вы не хотите начать с создания приложения контейнера с общедоступным образом, вы также можете сделать следующее.

  1. Создайте управляемое удостоверение, назначаемое пользователем.
  2. Добавьте роль в acrpull управляемое удостоверение, назначаемое пользователем.
  3. Создайте приложение-контейнер с частным изображением и управляемым удостоверением, назначаемое пользователем.

Этот метод является типичным в сценариях "Инфраструктура как код" (IaC).

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, можете удалить экземпляр Azure Container Apps и все связанные службы, удалив группу ресурсов.

Предупреждение

Удаление группы ресурсов приведет к удалению всех ресурсов в группе. Если у вас есть другие ресурсы в группе, они также будут удалены. Если вы хотите сохранить ресурсы, можно удалить экземпляр приложения контейнера и среду приложения контейнера.

  1. Выберите группу ресурсов в разделе "Обзор ".
  2. Нажмите кнопку Удалить группу ресурсов на панели инструментов в разделе Обзор группы ресурсов.
  3. Введите имя группы ресурсов в диалоговом окне подтверждения.
  4. Выберите команду Удалить.
    На удаление группы ресурсов может потребоваться несколько минут.

Управляемое удостоверение, назначаемое системой

Метод настройки управляемого удостоверения, назначаемого системой, в портал Azure совпадает с настройкой управляемого удостоверения, назначаемого пользователем. Единственное различие заключается в том, что вам не нужно создавать управляемое удостоверение, назначаемое пользователем. Вместо этого при создании приложения контейнера создается управляемое удостоверение, назначаемое системой.

Метод настройки управляемого удостоверения, назначаемого системой, в портал Azure:

  1. Создайте приложение-контейнер с общедоступным изображением.
  2. Создайте редакцию приложения-контейнера с частным изображением и управляемым удостоверением, назначаемое системой.

Необходимые компоненты

Создание приложения-контейнера

Выполните следующие действия, чтобы создать приложение-контейнер с изображением краткого руководства по умолчанию.

  1. Перейдите на домашнюю страницу портала.

  2. Введите Приложения-контейнеры в строке поиска вверху.

  3. В результатах поиска выберите Приложения-контейнеры.

  4. Выберите кнопку Создать.

  5. На вкладке Основы выполните следующие действия.

    Параметр Действие
    Подписка Выберите свою подписку Azure.
    Группа ресурсов Выберите существующую группу ресурсов или создайте новую.
    Имя приложения контейнера Введите имя приложения контейнера.
    Местонахождение Выберите расположение.
    Создание среды приложения-контейнера Создайте новую или выберите существующую среду.
  6. Нажмите кнопку "Просмотр и создание " в нижней части страницы "Создать приложение контейнера".

  7. Нажмите кнопку "Создать" в нижней части страницы "Создать приложение контейнера".

Разрешите несколько минут завершения развертывания приложения-контейнера. По завершении развертывания выберите элемент Перейти к ресурсу.

Изменение и развертывание редакции

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

  1. Контейнеры из бокового меню слева.

  2. Выберите Изменить и развернуть.

  3. Выберите в списке контейнер simple-hello-world-container .

    Параметр Действие
    Имя Введите имя приложения контейнера.
    Источник образа Выберите Реестр контейнеров Azure.
    Аутентификация Выберите Управляемое удостоверение.
    Identity Выберите "Назначенная система".
    Реестр Введите имя реестра.
    Изображение Введите имя изображения.
    Тег изображения Введите тег.

    Screen shot Edit a container with system-assigned managed identity.

    Примечание.

    Если учетные данные администратора не включены в реестре Реестр контейнеров Azure, отобразится предупреждение, и вам потребуется ввести имя изображения и сведения тега вручную.

  4. В нижней части страницы нажмите кнопку Сохранить.

  5. Выберите "Создать" в нижней части страницы "Создание и развертывание новой редакции"

  6. Через несколько минут нажмите кнопку "Обновить" на странице управления редакцией , чтобы увидеть новую редакцию.

Будет создана и развернута новая редакция. Портал автоматически попытается добавить acrpull роль в управляемое удостоверение, назначаемое системой. Если роль не добавлена, ее можно добавить вручную.

Вы можете убедиться, что роль была добавлена, проверка удостоверение в области удостоверений страницы приложения контейнера.

  1. Выберите удостоверение в меню слева.
  2. Выберите вкладку Назначаемое системой.
  3. Выберите Назначения ролей Azure.
  4. Убедитесь, что acrpull роль назначена управляемому удостоверению, назначенному системой.

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, можете удалить экземпляр Azure Container Apps и все связанные службы, удалив группу ресурсов.

Предупреждение

Удаление группы ресурсов приведет к удалению всех ресурсов в группе. Если у вас есть другие ресурсы в группе, они также будут удалены. Если вы хотите сохранить ресурсы, можно удалить экземпляр приложения контейнера и среду приложения контейнера.

  1. Выберите группу ресурсов в разделе "Обзор ".
  2. Нажмите кнопку Удалить группу ресурсов на панели инструментов в разделе Обзор группы ресурсов.
  3. Введите имя группы ресурсов в диалоговом окне подтверждения.
  4. Выберите команду Удалить.
    На удаление группы ресурсов может потребоваться несколько минут.

В этой статье описывается, как настроить приложение-контейнер для использования управляемых удостоверений для извлечения образов из частного репозитория Реестр контейнеров Azure с помощью Azure CLI и Azure PowerShell.

Необходимые компоненты

Необходимые условия Description
Учетная запись Azure Учетная запись Azure с активной подпиской. Если у вас его нет, его можно создать бесплатно.
Azure CLI При использовании Azure CLI установите Azure CLI на локальном компьютере.
Azure PowerShell При использовании PowerShell установите Azure PowerShell на локальном компьютере. Убедитесь, что последняя версия модуля Az.App установлена, выполнив команду Install-Module -Name Az.App.
Реестр контейнеров Azure Частный Реестр контейнеров Azure, содержащий изображение, которое требуется извлечь. Краткое руководство. Создание частного реестра контейнеров с помощью Azure CLI или краткого руководства. Создание частного реестра контейнеров с помощью Azure PowerShell

Настройка

Сначала войдите в Azure из ИНТЕРФЕЙСА командной строки или PowerShell. Выполните приведенную ниже команду и следуйте инструкциям на экране, чтобы пройти процесс проверки подлинности.

az login

Установите расширение "Приложения контейнеров Azure" для интерфейса командной строки.

az extension add --name containerapp --upgrade

Теперь, когда установлено текущее расширение или модуль, зарегистрируйте Microsoft.App пространство имен и Microsoft.OperationalInsights поставщика, если вы еще не зарегистрировали их.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Затем задайте следующие переменные среды. Замените <ЗАПОЛНИТЕЛИ> собственными значениями.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

Если у вас уже есть группа ресурсов, пропустите этот шаг. В противном случае создайте группу ресурсов.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Создание среды приложения-контейнера

Если среда не существует, выполните следующую команду:

Чтобы создать среду, выполните следующую команду:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Перейдите к следующему разделу, чтобы настроить управляемое удостоверение, назначаемое пользователем, или перейти к разделу управляемого удостоверения, назначаемого системой.

Управляемое удостоверение, назначаемое пользователем

Выполните следующую процедуру, чтобы настроить управляемое удостоверение, назначаемое пользователем:

  1. Создайте управляемое удостоверение, назначаемое пользователем.
  2. Если вы используете PowerShell, назначьте acrpull роль реестра управляемому удостоверению. Azure CLI автоматически делает это назначение.
  3. Создайте приложение-контейнер с изображением из частного реестра, прошедшего проверку подлинности с помощью управляемого удостоверения, назначаемого пользователем.

Создание управляемого удостоверения, назначаемого пользователем

Создайте управляемое удостоверение, назначаемое пользователем. Замените <заполнители> именем управляемого удостоверения.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

Получение идентификатора ресурса удостоверения.

IDENTITY_ID=`az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id`

Создание приложения-контейнера

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

Скопируйте идентификатор ресурса удостоверения для вставки в <заполнители IDENTITY_ID> в приведенной ниже команде. Если тег изображения не latestявляется, замените "latest" тегом.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "$REGISTRY_NAME.azurecr.io" \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Очистка

Внимание

Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют другие ресурсы, кроме созданных для этого краткого руководства, они также будут удалены.

az group delete --name $RESOURCE_GROUP

Управляемое удостоверение, назначаемое системой

Чтобы настроить назначаемое системой удостоверение, вам потребуется:

  1. Создайте приложение-контейнер с общедоступным изображением.
  2. Назначьте управляемое удостоверение, назначаемое системой, приложению контейнера.
  3. Обновите приложение-контейнер с помощью закрытого образа.

Создание приложения-контейнера

Создайте контейнер с общедоступным образом.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

Обновление приложения контейнера

Обновите приложение-контейнер с изображением из частного реестра контейнеров и добавьте удостоверение, назначаемое системой, для проверки подлинности Реестр контейнеров Azure извлечения. Вы также можете включить другие параметры, необходимые для приложения-контейнера, например входящего трафика, масштабирования и параметров Dapr.

Задайте сервер реестра и включите управляемое удостоверение, назначаемое системой, в приложении контейнера.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "$REGISTRY_NAME.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Очистка

Внимание

Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют другие ресурсы, кроме созданных для этого краткого руководства, они также будут удалены.

az group delete --name $RESOURCE_GROUP

Следующие шаги