Настройка образа контейнера для выполнения развертываний

Из этой статьи вы узнаете, как создавать пользовательские образы контейнеров Bicep для развертывания определений среды в средах развертывания Azure (ADE).

В этой статье вы узнаете, как создавать пользовательские образы контейнеров Terraform для развертывания определений среды в средах развертывания Azure (ADE). Вы узнаете, как настроить пользовательский образ для подготовки инфраструктуры с помощью платформы Terraform Infrastructure-as-Code (IaC).

Из этой статьи вы узнаете, как использовать Pulumi для развертываний в средах развертывания Azure (ADE). Вы узнаете, как использовать образ, предоставленный Pulumi или как настроить пользовательский образ для подготовки инфраструктуры с помощью платформы Pulumi Infrastructure-as-Code (IaC).

ADE поддерживает модель расширяемости, которая позволяет создавать пользовательские образы, которые можно использовать в определениях среды. Чтобы использовать эту модель расширяемости, создайте собственные пользовательские образы и сохраните их в реестре контейнеров, например Реестр контейнеров Azure (ACR) или Docker Hub. Затем вы можете ссылаться на эти образы в определениях среды для развертывания сред.

Определение среды состоит по крайней мере из двух файлов: файла шаблона, например azuredeploy.json или main.bicep, и файла манифеста с именем environment.yaml. ADE использует контейнеры для развертывания определений среды.

Команда ADE предоставляет набор образов для начала работы, включая основной образ и образ Azure Resource Manager (ARM)-Bicep. Эти образы можно получить в папке Runner-Images .

Определение среды состоит по крайней мере из двух файлов: файла шаблона, например main.tf, и файла манифеста с именем environment.yaml. Контейнер используется для развертывания определения среды, использующего Terraform.

Определение среды состоит по крайней мере из двух файлов: файла проекта Pulumi, Pulumi.yaml и файла манифеста с именем environment.yaml. Она также может содержать пользовательскую программу, написанную на предпочитаемом языке программирования: C#, TypeScript, Python и т. д. ADE использует контейнеры для развертывания определений среды.

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

Использование образов контейнеров с ADE

Вы можете использовать один из следующих подходов к использованию образов контейнеров с ADE:

  • Используйте образ контейнера для простых сценариев, используйте образ контейнера ARM-Bicep, предоставленный ADE.
  • Создайте пользовательский образ контейнера для более сложных сценариев, создайте пользовательский образ контейнера, соответствующий вашим конкретным требованиям.

Ниже приведены основные действия, которые необходимо выполнить при использовании образа контейнера:

  1. Выберите тип изображения, который вы хотите использовать: образец или пользовательский образ.
    • Если вы используете пользовательский образ, начните с примера образа, а затем настройте его в соответствии с вашими требованиями.
  2. Создание образа.
  3. Отправьте образ в частный реестр или общедоступный реестр.
  4. Настройте доступ к реестру.
    • Для общедоступного реестра настройте анонимный запрос.
    • Для частного реестра предоставьте разрешения ACR Для DevCenter.
  5. Добавление расположения изображения в параметр в определении runner среды
  6. Развертывание сред, использующих пользовательский образ.

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

Использование примера образа контейнера

ADE поддерживает ARM и Bicep без дополнительной настройки. Вы можете создать определение среды, которое развертывает ресурсы Azure для среды развертывания, добавив файлы шаблонов (например , azuredeploy.json и environment.yaml) в каталог. Затем ADE использует образ контейнера ARM-Bicep для создания среды развертывания.

В файле environment.yaml свойство указывает расположение образа контейнера, runner который требуется использовать. Чтобы использовать образ, опубликованный на Реестр артефактов Microsoft, используйте соответствующие идентификаторыrunner.

В следующем примере показано runner , что ссылается на образ контейнера ARM-Bicep:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

Образ контейнера Bicep можно просмотреть в репозитории ADE в папке Runner-Images для образа ARM-Bicep .

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

Используйте пользовательский образ для настройки образа Terraform.

Использование примера образа контейнера, предоставленного Pulumi

Команда Pulumi предоставляет предварительно созданный образ для начала работы, который можно увидеть в папке Runner-Image . Этот образ доступен в Центре pulumi/azure-deployment-environmentsDocker в Pulumi, так что его можно использовать непосредственно из определений среды ADE.

Ниже приведен пример файла environment.yaml , который использует предварительно созданный образ:

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

В папке "Среды" можно найти несколько примеров определений среды.

Создание образа

Вы можете создать образ с помощью интерфейса командной строки Docker. Убедитесь, что подсистема Docker установлена на компьютере. Затем перейдите в каталог Dockerfile и выполните следующую команду:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Например, если вы хотите сохранить образ в репозитории в реестре с именем customImageи отправить с помощью версии тега 1.0.0, выполните следующие действия:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Сделать настраиваемый образ доступным для ADE

Чтобы использовать пользовательские образы, их необходимо хранить в реестре контейнеров. Вы можете использовать общедоступный реестр контейнеров или частный реестр контейнеров. Реестр контейнеров Azure (ACR) настоятельно рекомендуется из-за тесной интеграции с ADE, изображение может быть опубликовано без разрешения общедоступных анонимных доступ на вытягивание. Необходимо создать пользовательский образ контейнера и отправить его в реестр контейнеров, чтобы сделать его доступным для использования в ADE.

Кроме того, можно сохранить образ в другом реестре контейнеров, например Docker Hub, но в этом случае он должен быть общедоступным.

Внимание

Хранение образа контейнера в реестре с анонимным (неуправляемым) доступ на вытягивание делает его общедоступным. Не делайте этого, если изображение содержит конфиденциальную информацию. Вместо этого сохраните его в Реестр контейнеров Azure (ACR) с анонимным доступ на вытягивание отключен.

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

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

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

Использование частного реестра с защищенным доступом

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

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

Ограничение сетевого доступа

Чтобы защитить сетевой доступ к ACR, можно ограничить доступ к собственным сетям или полностью отключить доступ к общедоступной сети. Если ограничить доступ к сети, необходимо включить исключение брандмауэра allow trusted службы Майкрософт для доступа к этому реестру контейнеров.

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

  1. Создайте экземпляр ACR или используйте существующий.

  2. В портал Azure перейдите к ACR, который требуется настроить.

  3. В меню слева в разделе "Параметры" выберите "Сеть".

  4. На странице "Сеть" на вкладке "Общедоступный доступ" в разделе "Доступ к общедоступной сети" выберите "Отключено".

    Снимок экрана: портал Azure с параметрами сети ACR с выделенным общедоступным доступом и отключенным.

  5. В разделе "Исключение брандмауэра" установите флажок разрешить доверенным службы Майкрософт доступ к этому реестру контейнеров, а затем нажмите кнопку "Сохранить".

    Снимок экрана: параметры сети ACR с выделенным параметром

Назначение роли AcrPull

Создание сред с помощью образов контейнеров использует инфраструктуру ADE, включая проекты и типы сред. Каждый проект имеет один или несколько типов среды проекта, которые нуждаются в доступе на чтение к образу контейнера, определяющему среду для развертывания. Чтобы получить доступ к изображениям в ACR безопасно, назначьте роль AcrPull каждому типу среды проекта.

Чтобы назначить роль AcrPull типу среды проекта:

  1. В портал Azure перейдите к ACR, который требуется настроить.

  2. В меню слева выберите контроль доступа (IAM).

  3. Выберите Добавить>Добавить назначение ролей.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Параметр Значение
    Роль Выберите AcrPull.
    Назначение доступа Выберите "Пользователь", "Группа" или "Субъект-служба".
    Участники Введите имя типа среды проекта, который должен получить доступ к образу в контейнере.

    Тип среды проекта отображается следующим образом:

    Снимок экрана: область

В этой конфигурации ADE использует управляемое удостоверение для PET, назначаемое системой или назначаемое пользователем.

Совет

Это назначение роли должно быть сделано для каждого типа среды проекта. Его можно автоматизировать с помощью Azure CLI.

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

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

Создание образа контейнера с помощью скрипта

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

Корпорация Майкрософт предоставляет скрипт быстрого запуска, который поможет вам создать пользовательский образ и отправить его в реестр. Скрипт создает образ и отправляет его в указанный Реестр контейнеров Azure (ACR) под репозиторием ade и тегомlatest.

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

  1. Создайте папку Dockerfile и скриптов для поддержки модели расширяемости ADE.
  2. Укажите имя реестра и каталог для пользовательского образа.
  3. Установите Azure CLI и Docker Desktop и в переменные PATH.
  4. Запущено приложение Docker Desktop.
  5. У вас есть разрешения на отправку в указанный реестр.

Здесь можно просмотреть скрипт.

Скрипт можно вызвать с помощью следующей команды в PowerShell:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Кроме того, если вы хотите отправить в определенный репозиторий и имя тега, можно выполнить следующее:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Подключение образа к определению среды

При создании определений среды для использования пользовательского образа в развертывании измените runner свойство в файле манифеста (environment.yaml или manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

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