В этой статье я в простой форме покажу вам, как настроить CI/CD конвейер для автоматического развертывания ресурсов инфраструктуры облака Google с помощью Terraform, Cloud Build и Github.
Цели
Автоматическое развертывание ресурсов в Google Cloud из кода Terraform, размещенного в репозитории контроля исходных кодов.
Требования
Чтобы выполнить все шаги этой статьи, вам понадобится функциональный аккаунт в облаке Google (можно использовать бесплатную пробную версию), аккаунт Github, а также базовые знания в области облака Google и Terraform.
Предоставление необходимых разрешений Cloud Build
Чтобы Cloud Build мог выполнять необходимые развертывания на инфраструктуре, ему нужны соответствующие разрешения. В этой лабораторной работе я буду действовать быстрее, предоставив учетной записи службы роль редактора проекта. Получите учетную запись службы Cloud Build и предоставьте ей необходимые разрешения, чтобы она могла вносить необходимые изменения в ресурсы.
Конечно, в производственной среде необходимо соблюдать принцип наименьших привилегий.
Для этого выполните следующую команду в оболочке облака
Чтобы получить учетную запись службы Cloud Build, нажмите на Cloud Build, затем settings.
Там вы найдете адрес электронной почты учетной записи сервиса.
Настройте репозиторий Github и подключите к нему Cloud Build
Войдите на Github и создайте новое репо, затем загрузите файлы Terraform или отредактируйте новые прямо на Github. [Click here](https://Github.com/davWK/ci-cd-terraform-cloudbuild_basics для форка моего примера репозитория файлов инфраструктуры, или, если вы хорошо знакомы с Terraform и хотите развернуть собственную инфраструктуру, напишите их с нуля. После этого перейдите в Cloud Build для настройки автоматического развертывания с помощью триггера сборки. Вы будете использовать Cloud Build и его триггеры сборки для автоматического развертывания ваших ресурсов каждый раз, когда вы делаете новый git-коммит в исходный репозиторий.
-
Перейдите в Cloud Build
-
и слева выберите триггер
-
нажмите на кнопку «Создать триггер
-
Дайте ему имя, а для события выберите push to the branch.
-
Для источника выберите** репозиторий** и нажмите подключить новый репозиторий.
Здесь можно связать репозиторий Github с Cloud Build путем зеркалирования репозитория Github в Cloud Source Repositories или с помощью приложения Google Cloud Build Github. В данном случае мы будем использовать приложение
Посмотрите, как настроить приложение. После настройки приложения, -
Вернитесь на страницу создания триггера, нажмите на репозиторий и выберите только что созданный репозиторий
-
В ветке установите значение ^master$ или ^main$
-
Для типа конфигурации выберите файл конфигурации Cloud Build (yaml или json)
и в своем Github-репозитории создайте файл cloudbuid.yaml с приведенным ниже содержимым.
steps:
- id: 'tf init'
name: 'hashicorp/terraform:1.0.0'
entrypoint: 'sh'
args:
- '-c'
- |
terraform init
- id: 'tf apply'
name: 'hashicorp/terraform:1.0.0'
entrypoint: 'sh'
args:
- '-c'
- |
terraform apply -auto-approve
Вернитесь на страницу триггера, в поле location, выбрав repository, укажите путь к yaml-файлу или выберите inline (в этом случае вам не нужно будет создавать yaml-файл в репозитории, а достаточно будет вставить содержимое yaml прямо в редактор кода).
Оставьте остальные значения по умолчанию и нажмите на кнопку create
Вуаля 🙂 развертывание ваших ресурсов должно начаться автоматически, если вы сделаете push yaml файла, созданного ранее, если нет, вы можете запустить его вручную в первый раз, в последующие разы, как только вы обновите конфигурацию Terraform, обновление ваших ресурсов должно произойти автоматически.