Терраформировать определения служб Kubernetes в отдельных репозиториях git?

#git #kubernetes #terraform

#git #kubernetes #терраформировать

Вопрос:

Существует ли рекомендуемый шаблон или решение для сохранения определений отдельных служб Terraform в их соответствующих репозиториях кода, сохраняя при этом возможность одновременного обновления всей инфраструктуры проекта?

Мы переходим на GCP из управляемой службы и уже используем Github Actions.

Я думал о том, чтобы сделать это несколькими различными способами, либо через частные модули Terraform в GCS, либо с использованием подмодулей git.

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

Комментарии:

1. Да, вы бы использовали модули и объявляли их в корневой конфигурации. Не используйте подмодули git для чего-либо подобного, поскольку они используются, когда в программном обеспечении / инструменте не существует собственного решения.

2. В GCP я бы также рассмотрел Config Connector в качестве альтернативы: cloud.google.com/blog/products/containers-kubernetes /…

Ответ №1:

Взгляните на Terragrunt:https://terragrunt.gruntwork.io /

При объявлении terraform блока source аргументом может быть ссылка на другое репозиторий git https://terragrunt.gruntwork.io/docs/features/keep-your-terraform-code-dry/#remote-terraform-configurations

Чтобы обновить весь проект сразу, есть terragrunt plan-all , terragrunt apply-all и очень удобно terragrunt graph-dependencies .

Gruntwork (организация, которая создала это) имеет набор бесплатных модулей https://github.com/gruntwork-io /, набор платных модулей (ежемесячная подписка) и, конечно, вы можете использовать свои собственные модули.

Комментарии:

1. Прочитал документы, так что, похоже, для доступа к этим удаленным конфигурациям я бы включил SSH auth, правильно звучит? terragrunt.gruntwork.io/docs/features /…

2. Да, для частных репозиториев компьютер, на котором вы запускаете terragrunt, должен иметь ssh-доступ к репозиториям для извлечения. Он в основном извлекает все зависимости в .terragrunt-cache , а затем запускает terraform.