Развертывание в приложениях-контейнерах Azure из Azure Pipelines
Приложения контейнеров Azure позволяют использовать Azure Pipelines для публикации редакций в приложении-контейнере. При отправке фиксаций в репозиторий Azure DevOps конвейер активируется, который обновляет образ контейнера в реестре контейнеров. Приложения контейнеров Azure создают новую редакцию на основе обновленного образа контейнера.
Фиксирует определенную ветвь в репозитории, активирует конвейер. При создании конвейера вы решите, какая ветвь является триггером.
Задача Azure Pipelines для контейнерных приложений
Задача поддерживает следующие сценарии:
- Сборка из Dockerfile и развертывание в приложениях-контейнерах
- Сборка из исходного кода без Dockerfile и развертывание в приложениях-контейнерах. Поддерживаемые языки: .NET, Java, Node.js, PHP и Python
- Развертывание существующего образа контейнера в приложениях контейнеров
В рабочем выпуске эта задача поставляется с Azure DevOps и больше не требует явной установки. Полную документацию см. в статье AzureContainerApps@1. Задача "Развертывание приложений контейнеров Azure" версии 1.
Примеры использования
Ниже приведены некоторые распространенные сценарии использования задачи. Дополнительные сведения см. в документации по задаче.
Создание и развертывание в приложениях-контейнерах
В следующем фрагменте кода показано, как создать образ контейнера из исходного кода и развернуть его в приложениях контейнеров.
steps:
- task: AzureContainerApps@1
inputs:
appSourcePath: '$(Build.SourcesDirectory)/src'
azureSubscription: 'my-subscription-service-connection'
acrName: 'myregistry'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
Задача использует Dockerfile для appSourcePath
создания образа контейнера. Если файл Dockerfile не найден, задача пытается создать образ контейнера из исходного кода appSourcePath
.
Развертывание существующего образа контейнера в приложениях контейнеров
В следующем фрагменте кода показано, как развернуть существующий образ контейнера в приложениях контейнеров. Задача выполняет проверку подлинности в реестре с помощью подключения службы. Если удостоверение подключения к службе не назначено AcrPush
роли для реестра, укажите учетные данные администратора реестра с помощью acrUsername
параметров и acrPassword
входных параметров.
steps:
- task: AzureContainerApps@1
inputs:
azureSubscription: 'my-subscription-service-connection'
containerAppName: 'my-container-app'
resourceGroup: 'my-container-app-rg'
imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'
Внимание
Если вы создаете образ контейнера на отдельном шаге, убедитесь, что вы используете уникальный тег, например идентификатор сборки вместо стабильного тега, например latest
. Дополнительные сведения см. в рекомендациях по тегу изображений.
Проверка подлинности с помощью Реестр контейнеров Azure
Задача "Приложения контейнеров Azure" должна пройти проверку подлинности с помощью Реестр контейнеров Azure для отправки образа контейнера. Приложение контейнера также должно пройти проверку подлинности с помощью Реестр контейнеров Azure, чтобы извлечь образ контейнера.
Для отправки образов задача автоматически проходит проверку подлинности с помощью реестра контейнеров, указанного в acrName
подключении azureSubscription
службы. Если удостоверение подключения службы не назначено AcrPush
роли для реестра, укажите учетные данные администратора реестра, используя acrUsername
и acrPassword
.
Для извлечения образов приложения контейнеров Azure используют управляемое удостоверение (рекомендуется) или учетные данные администратора для проверки подлинности с помощью Реестр контейнеров Azure. Чтобы использовать управляемое удостоверение, целевое приложение контейнера для задачи должно быть настроено для использования управляемого удостоверения. Чтобы пройти проверку подлинности с учетными данными администратора реестра, задайте для задачи acrUsername
и acrPassword
входные данные.
Настройка
Выполните следующие действия, чтобы настроить конвейер Azure DevOps для развертывания в приложениях контейнеров Azure.
- Создание репозитория Azure DevOps для приложения
- Создание приложения-контейнера с включенным управляемым удостоверением
AcrPull
Назначение роли для Реестр контейнеров Azure управляемому удостоверению приложения-контейнера- Установка задачи "Приложения контейнеров Azure" из Azure DevOps Marketplace
- Настройка подключения службы Azure DevOps для подписки Azure
- Создание конвейера Azure DevOps
Необходимые компоненты
Требование | Instructions |
---|---|
Учетная запись Azure | Если у вас нет учетной записи, создайте бесплатную учетную запись. Чтобы продолжить, вам потребуется разрешение участника или владельца подписки Azure. Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портал Azure. |
Azure DevOps Projects | Перейдите в Azure DevOps и выберите "Пуск бесплатно". Затем создайте проект. |
Azure CLI | Установите интерфейс командной строки Azure. |
Создание репозитория Azure DevOps и клонирование исходного кода
Перед созданием конвейера исходный код приложения должен находиться в репозитории.
Войдите в Azure DevOps и перейдите к проекту.
Откройте страницу Repos .
В верхней панели навигации выберите раскрывающийся список репозиториев и выберите "Импорт репозитория".
Введите следующие сведения и нажмите кнопку "Импорт".
Поле значение Тип репозитория Git Клонированный URL-адрес https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
Имя my-container-app
Выберите "Клонировать", чтобы просмотреть URL-адрес репозитория и скопировать его.
Откройте терминал и выполните следующую команду:
git clone <REPOSITORY_URL> my-container-app
Замените
<REPOSITORY_URL>
скопированный URL-адрес.
Создание приложения-контейнера и настройка управляемого удостоверения
Создайте приложение-контейнер с помощью az containerapp up
команды, выполнив следующие действия. Эта команда создает ресурсы Azure, создает образ контейнера, сохраняет образ в реестре и развертывает его в приложении-контейнере.
После создания приложения вы можете добавить управляемое удостоверение в приложение и назначить удостоверение роли, чтобы позволить удостоверению AcrPull
извлекать образы из реестра.
Перейдите в папку src клонированного репозитория.
cd my-container-app cd src
Создайте ресурсы Azure и разверните приложение-контейнер с
az containerapp up
помощью команды.az containerapp up \ --name my-container-app \ --source . \ --ingress external
В выходных данных команды запишите имя Реестр контейнеров Azure.
Получите полный идентификатор ресурса реестра контейнеров.
az acr show --name <ACR_NAME> --query id --output tsv
Замените
<ACR_NAME>
именем своего реестра.Включите управляемое удостоверение для приложения-контейнера.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
Обратите внимание на идентификатор субъекта управляемого удостоверения в выходных данных команды.
AcrPull
Назначьте роль для Реестр контейнеров Azure управляемому удостоверению приложения контейнера.az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>
Замените
<MANAGED_IDENTITY_PRINCIPAL_ID>
главным идентификатором управляемого удостоверения и<ACR_RESOURCE_ID>
идентификатором ресурса Реестр контейнеров Azure.Настройте приложение-контейнер, чтобы использовать управляемое удостоверение для извлечения образов из Реестр контейнеров Azure.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity system
Замените
<ACR_NAME>
именем Реестр контейнеров Azure.
Создание подключения службы Azure DevOps
Чтобы развернуть в приложениях контейнеров Azure, необходимо создать подключение службы Azure DevOps для подписки Azure.
В Azure DevOps выберите Параметры проекта.
Выберите подключения службы.
Выберите новое подключение к службе.
Выберите Azure Resource Manager.
Выберите субъект-службу (автоматически) и нажмите кнопку "Далее".
Введите следующие сведения и нажмите кнопку "Сохранить".
Поле значение Подписка Выберите свою подписку Azure. Группа ресурсов Выберите группу ресурсов ( my-container-app-rg
), содержащую приложение контейнера и реестр контейнеров.Имя подключения службы my-subscription-service-connection
Дополнительные сведения о подключениях к службам см. в статье "Подключение к Microsoft Azure".
Создание конвейера YAML Azure DevOps
В проекте Azure DevOps выберите Pipelines.
Выберите Создать конвейер.
Выберите Azure Repos Git.
Выберите репозиторий, содержащий исходный код (
my-container-app
).Выберите Простейший конвейер.
В редакторе замените содержимое файла следующим yamL:
trigger: branches: include: - main pool: vmImage: ubuntu-latest steps: - task: AzureContainerApps@1 inputs: appSourcePath: '$(Build.SourcesDirectory)/src' azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>' acrName: '<ACR_NAME>' containerAppName: 'my-container-app' resourceGroup: 'my-container-app-rg'
Замените
<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>
именем подключения службы Azure DevOps (my-subscription-service-connection
), созданного на предыдущем шаге, и<ACR_NAME>
именем Реестр контейнеров Azure.Выберите Сохранить и выполнить.
Запуск Azure Pipelines начинает сборку и развертывание приложения контейнера. Чтобы проверить ход выполнения, перейдите к конвейерам и выберите выполнение. Во время первого запуска конвейера может потребоваться авторизовать конвейер для использования подключения к службе.
Чтобы развернуть новую редакцию приложения, отправьте новую фиксацию в основную ветвь.