Конвейер CI/CD Gridwich

Microsoft Entra ID
Сетка событий Azure
Функции Azure
Azure Key Vault
Azure Pipelines

Gridwich требует, чтобы несколько ресурсов в Azure и за пределами Azure безопасно взаимодействовали друг с другом. Это требование создает проблемы непрерывной интеграции и непрерывной доставки (CI/CD) с разрешениями Microsoft Entra, шлюзами, созданием ресурсов, порядком работы и длительным развертыванием функций. Следующие руководящие принципы решают следующие проблемы:

  • Один артефакт сборки влияет на все среды в одном конвейере.
  • Не воротные среды являются удаленными.
  • Terraform декларативно создает идемпотентные среды.
  • Terraform не выпускает программное обеспечение.
  • Создание инфраструктуры и выпуск программного обеспечения являются отдельными этапами в конвейере.
  • Конвейер CI/CD не назначает разрешения Microsoft Entra.
  • Конвейер рассматривает все как код.
  • Конвейер использует повторно используемые компоненты, ориентированные на компостируемость.

Следующие рекомендации связаны с предыдущими принципами.

Один артефакт, несколько сред

Конвейер Gridwich масштабируется до нескольких сред, но существует только один артефакт, который конвейер продвигает из одной среды в следующую.

Выпуск программного обеспечения и создание инфраструктуры

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

Развертывание программного обеспечения программного обеспечения для развертывания программного обеспечения для сборки программного обеспечения для сборки >> программного > обеспечения > . Развертывание пользовательского скрипта

Руководящим принципом, что инфраструктура и выпуск программного обеспечения являются двумя отдельными обязанностями, что упрощает развертывание подписок Сетки событий. Когда Azure создает подписку веб-перехватчика сетки событий, она отправляет событие проверки, чтобы проверка принимает ли регистрация конечная точка принимает события Сетки событий. Чтобы передать эту проверку проверка, функция Azure должна быть выпущена и запущена, прежде чем Terraform сможет создать ресурсы подписки Сетки событий.

Для решения этой проблемы в конвейере CI/CD существует два задания Terraform:

Diagram showing the Terraform sandwich jobs.

  • Terraform 1 создает все ресурсы, кроме Сетка событий Azure подписок.
  • Terraform 2 создает подписки Сетки событий после запуска и запуска программного обеспечения.

Так как в настоящее время Terraform не имеет возможности исключить определенный модуль, задание Terraform 1 должно явно нацелено на все модули, кроме подписок Сетки событий. Это требование потенциально подвержено ошибкам, и текущая проблема GitHub в Terraform отслеживает эту проблему.

Скрипты после развертывания

Конвейер CI/CD не выполняет операции, требующие повышенных привилегий, но использует шаблоны сценариев администратора для создания набора скриптов администратора в качестве артефактов конвейера. Администратор с повышенными привилегиями должен запускать эти сценарии администратора всякий раз, когда создается новая среда Gridwich. Дополнительные сведения см. в статье "Запуск сценариев администратора Azure".

Terraform и выпуски программного обеспечения не могут завершить определенные операции Gridwich, в том числе:

  • Копирование сертификатов в Azure Key Vault
  • Включение аналитики хранилища в служба хранилища Azure

Скрипт Azure CLI azcli-last-steps-template.yml предоставляет следующие последние шаги.

Все как код и повторное использование кода

Одним из преимуществ практики "все как код" является повторное использование компонента.

  • Для Terraform Gridwich сильно зависит от модулей Terraform для повышения компостности и повторного использования.
  • Для YAML Azure Pipelines в Gridwich используются шаблоны конвейеров.

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