Планирование конвейера выпуска с помощью Azure Pipelines
В этом разделе описано, как Энди и Мара планируют базовый конвейер CD, работающий в Azure Pipelines.
Когда все будет готово, они продемонстрируют это остальной команде. Конвейер будет служить в качестве доказательства концепции, над которым они будут работать и расширять его по мере того, как узнают больше и получат отзывы от Тима и Амиты.
Каковы части базового конвейера CD?
Базовый конвейер CD содержит триггер для запуска процесса и по крайней мере один этап или этап развертывания. Этап состоит из заданий. Задание — это ряд шагов, определяющих способ сборки, тестирования или развертывания приложения.
Энди: У нас уже есть артефакт сборки . Это файл .zip, который создает существующий конвейер сборки. Но как развернуть его в
рабочей среде?
Что такое этап конвейера?
Этап является частью конвейера, который может выполняться независимо и запускаться различными механизмами. Механизмом может быть успех предыдущего этапа, расписание или даже ручной триггер. Дополнительные сведения об этих механизмах см. в следующем модуле.
Мара: У нас может быть этап, который создает приложение и другой этап, на котором выполняются тесты.
Мара: Мы уже определили задачи этапа сборки в нашем конвейере. Этап развертывания
может быть аналогичным, включает задачи развертывания сборки в среде.
Вопрос в том, где следует развернуть артефакт?
Что такое среда?
Скорее всего, вы использовали термин среды для ссылки на то, где работает ваше приложение или служба. Например, ваша производственная среда может быть местом, где конечные пользователи получают доступ к вашему приложению.
В этом примере ваша среда производства может быть:
- Физическая машина или виртуальная машина (VM).
- Контейнерная среда, например Kubernetes.
- Управляемая служба, например Служба приложений Azure.
- Бессерверная среда, например Функции Azure.
Артефакт развертывается в рабочей среде. Azure Pipelines упрощает развертывание практически в любой среде, будь то локальной или в облаке.
В Azure Pipelines термин "среда" имеет второе значение. Здесь среда представляет собой абстрактное представление среды развертывания, например кластера Kubernetes, экземпляра службы приложений или виртуальной машины.
Среда Azure Pipelines записывает журнал развертывания, помогающий определить источник изменений. С помощью сред Azure Pipelines можно также определить проверки безопасности и способы управления продвижением артефакта с одного этапа конвейера на другой. То, что включает в себя среда, зависит от того, что вы хотите сделать с артефактом. Среда, в которой требуется протестировать артефакт, вероятно, будет определена по-разному, чем в том месте, где требуется развернуть артефакт для конечных пользователей.
Одним из способов определения среды Azure Pipelines является файл YAML. Файл YAML содержит раздел environment
, указывающий среду Azure Pipelines, в которой будет развернут артефакт.
При планировании конвейера выпуска необходимо решить, где будет работать приложение или служба. Давайте послушаем и посмотрим, что Энди и Мара решают.
Энди: В общих чертах, какие условия мы хотим? Следует ли нам развертывать на собственных серверах или в облаке?
Мара: Мы могли бы попросить Тима создать для нас виртуалку в лаборатории, но у него всегда не хватает оборудования. Это будет быстро и легко настроить POC самостоятельно, если мы используем облако.
Энди: Я согласен; но существует так много облачных решений, и мы можем использовать Azure Pipelines для развертывания в любом из них. Что мы должны попробовать?
Мара: Команды, которые разрабатывают наши игры, используют Azure для размещения некоторых внутренних систем. Они быстро настроили его и, кажется, довольны. Я думаю, что мы должны придерживаться Azure для нашего облака.
Энди: Хорошо, это имеет смысл! Но Azure предоставляет так много вариантов вычислений. Какой из них следует выбрать?
Энди перечисляет эти параметры на доске:
- Виртуальные машины
- Контейнеры
- Служба приложений Azure
- Бессерверные вычисления
Заметка
Дополнительные сведения о каждом из этих параметров вычислений вы найдете в конце этого модуля.
Мара: я знаю, что контейнеры и бессерверные вычисления популярны прямо сейчас. По сравнению с виртуальными машинами они легковесны в плане ресурсов. Они также легко заменяются и масштабируются. Оба интересны, но я нервничаю из-за одновременного изучения двух новых технологий. Я бы предпочел сосредоточиться только на строительстве конвейера.
Энди: я с тобой. Остались виртуальные машины или служба приложений. Я думаю, что виртуальные машины будут лучшим выбором, если мы перемещаем бизнес-приложение , которое требует полного доступа к определенной среде в облако. Мы не делаем ничего настолько значительного.
Мара: Это оставляет службу приложений, которая была бы моим выбором. Он предназначен для работы с Azure DevOps, и он поставляется с преимуществами. Это среда «платформа как услуга» (PaaS) для веб-приложений, поэтому она снимает с нас большую часть нагрузки. Нам не придется беспокоиться о инфраструктуре. Он также поставляется с функциями безопасности и позволяет выполнять балансировку нагрузки и автоматическое масштабирование.
Энди: Служба приложений, похоже, это то, что нам нужно. Давайте используем службу приложений. Мы всё равно создаём только прототип. Мы всегда можем изменить параметр вычислений, если мы хотим попробовать что-то другое позже.
Как Azure Pipelines выполняет действия по развертыванию?
Чтобы развернуть ваше приложение, Azure Pipelines сначала необходимо авторизоваться в целевой среде. Azure Pipelines предоставляет различные механизмы проверки подлинности. То, что вы используете, зависит от целевой среды, в которую происходит развертывание. Дополнительные сведения об этих механизмах см. в конце этого модуля.
Энди: У нас есть артефакт сборки, и мы знаем, что будем создавать и развёртывать на этапах конвейера. Мы также определили целевую среду для развертывания. Это служба приложений. Теперь мой вопрос: как Azure Pipelines проходит проверку подлинности в службе приложений? Я знаю, что это будет одной из проблем Тима. Нам необходимо обеспечить безопасность процесса.
После некоторого исследования Энди и Мара разработали общие шаги, которые позволяют Azure Pipelines развертывать на Службе приложений.
- Укажите целевую среду развертывания в конфигурации конвейера.
- Предоставьте способ проверки подлинности доступа к этой среде в Azure Pipelines.
- Используйте задачи Azure Pipelines для развертывания пакета сборки в указанную среду.
Мара: Согласно нашим исследованиям, необходимо создать подключение службы, чтобы указать целевую среду и аутентифицировать доступ к ней. После того как мы определим подключение к службе, оно будет доступно для всех наших задач. Затем необходимо использовать встроенные задачи DownloadPipelineArtifact для скачивания артефакта сборки в агент конвейера и AzureWebApp для развертывания приложения в Службе приложений Azure.
Что такое задания и стратегии?
Существующий конвейер сборки определяет агент сборки, переменные конвейера и задачи, необходимые для сборки программного обеспечения.
Часть развертывания конвейера содержит те же элементы. Конфигурация развертывания обычно определяет одно или несколько заданий, среду конвейера и стратегии. Вы узнали о средах конвейера ранее.
Ниже приведен пример конфигурации, которую вы будете запускать позже в этом модуле. Эта конфигурация развертывает веб-сайт Space Game в службе приложений Azure App Service.
- stage: 'DeployDev'
displayName: 'Deploy to dev environment'
dependsOn: Build
jobs:
- deployment: Deploy
pool:
vmImage: 'ubuntu-20.04'
environment: dev
variables:
- group: 'Release Pipeline'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: drop
- task: AzureWebApp@1
displayName: 'Azure App Service Deploy: website'
inputs:
azureSubscription: 'Resource Manager - Tailspin - Space Game'
appName: '$(WebAppName)'
package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Вакансии
задание — это ряд шагов (или задач), которые выполняются последовательно как одно целое. Каждый этап конвейера имеет одно задание по умолчанию, даже если этот этап не использует ключевое слово job
.
Задание может выполняться в пуле агентов, в контейнере или непосредственно на сервере Azure DevOps. Пример задания, показанного здесь, выполняется в агенте Ubuntu, размещенном корпорацией Майкрософт.
Вы можете указать условия, в которых выполняется каждое задание. Пример задания, показанного здесь, не определяет никаких условий. По умолчанию задание выполняется, если оно не зависит от другого задания или если все задания, от которых она зависит, успешно завершены.
Можно также выполнять задания параллельно или последовательно. Используя существующий конвейер сборки в качестве примера, можно использовать параллельные задания для создания программного обеспечения в агентах Windows, Linux и macOS одновременно.
Задание развертывания — это особый тип задания, который играет важную роль в этапах развертывания. Задания развертывания записывают состояние развертываний в Azure Pipelines, предоставляя журнал аудита. Задания развертывания также помогут вам определить стратегию развертывания, которую мы скоро разработаем.
Стратегии
Стратегия определяет способ развертывания вашего приложения. Вы сможете узнать больше о таких стратегиях, как синий-зеленый и канареечный, в будущем модуле. Теперь вы будете использовать стратегию runOnce, чтобы скачать пакет Space Game из конвейера и развернуть его в службе приложений Azure.
Как Azure Pipelines подключается к Azure?
Чтобы развернуть приложение в ресурсе Azure, например виртуальной машине или службе приложений, необходимо подключение службы. Подключение службы обеспечивает безопасный доступ к подписке Azure с помощью одного из двух методов:
- Проверка подлинности субъекта-службы
- Управляемые удостоверения для ресурсов Azure
Дополнительные сведения об этих моделях безопасности можно узнать в конце этого модуля, но кратко:
- Представитель службы — это удостоверение с ограниченной ролью, которое может получить доступ к ресурсам Azure. Представьте принципал службы как учетную запись, которая может выполнять автоматизированные задачи от имени пользователя.
- управляемые удостоверения для ресурсов Azure — это функция системы идентификации Microsoft Entra, которая упрощает процесс работы с основными учетными записями службы. Так как управляемые удостоверения существуют в клиенте Microsoft Entra, инфраструктура Azure может автоматически проходить проверку подлинности службы и управлять учетной записью.
Управляемые удостоверения упрощают работу с субъектами-службами; но в этом модуле мы будем использовать проверку подлинности субъекта-службы, так как подключение службы может автоматически обнаруживать ресурсы Azure и назначать соответствующие роли субъекта-службы.
План
Энди и Мара готовы начать. Они собираются:
- Развивайте их существующую конфигурацию сборки Azure Pipelines.
- Определите этап сборки, создающий артефакт.
- Определите этап развертывания, который развертывает артефакт в службе приложений.
Энди: Правильно ли это рисование? Мы используем Azure Pipelines для развертывания в службу приложений Azure
. Для этого мы используем артефакт сборки
в качестве входа для этапа развертывания
. Задачи на этапе развертывания скачивают артефакт
и используют служебное подключение для развертывания артефакта в App Service
.
Мара: Это примерно подытоживает. Давайте начнем.