Gridwich требует, чтобы несколько ресурсов в Azure и за пределами Azure безопасно взаимодействовали друг с другом. Это требование создает проблемы непрерывной интеграции и непрерывной доставки (CI/CD) с разрешениями Microsoft Entra, шлюзами, созданием ресурсов, порядком работы и длительным развертыванием функций. Следующие руководящие принципы решают следующие проблемы:
- Один артефакт сборки влияет на все среды в одном конвейере.
- Не воротные среды являются удаленными.
- Terraform декларативно создает идемпотентные среды.
- Terraform не выпускает программное обеспечение.
- Создание инфраструктуры и выпуск программного обеспечения являются отдельными этапами в конвейере.
- Конвейер CI/CD не назначает разрешения Microsoft Entra.
- Конвейер рассматривает все как код.
- Конвейер использует повторно используемые компоненты, ориентированные на компостируемость.
Следующие рекомендации связаны с предыдущими принципами.
Один артефакт, несколько сред
Конвейер Gridwich масштабируется до нескольких сред, но существует только один артефакт, который конвейер продвигает из одной среды в следующую.
Выпуск программного обеспечения и создание инфраструктуры
В Gridwich выпуск программного обеспечения и развертывание инфраструктуры являются двумя отдельными обязанностями. Один конвейер обрабатывает обе обязанности на различных этапах, используя следующий общий шаблон:
Развертывание программного обеспечения программного обеспечения для развертывания программного обеспечения для сборки программного обеспечения для сборки >> программного > обеспечения > . Развертывание пользовательского скрипта
Руководящим принципом, что инфраструктура и выпуск программного обеспечения являются двумя отдельными обязанностями, что упрощает развертывание подписок Сетки событий. Когда Azure создает подписку веб-перехватчика сетки событий, она отправляет событие проверки, чтобы проверка принимает ли регистрация конечная точка принимает события Сетки событий. Чтобы передать эту проверку проверка, функция Azure должна быть выпущена и запущена, прежде чем Terraform сможет создать ресурсы подписки Сетки событий.
Для решения этой проблемы в конвейере CI/CD существует два задания Terraform:
- 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 используются шаблоны конвейеров.