Terraform позволяет создать облачную инфраструктуру с помощью всего одной команды. Допустим, вы хотите запустить Elasticsearch и Kibana в кластере Kubernetes.
Для этого можно написать несколько файлов
.tf
и выполнить команду
terraform apply
для инициализации кластера Kubernetes и развёртывания на нем нескольких подсистем.
Теперь предположим, что вам нужны и другие экземпляры стека Elastic, которые можно использовать для демонстрации. В этом случае придется создать новые рабочие
пространства Terraform и выполнить
terraform apply
несколько раз.
Проблема такого подхода заключается в том, что в этом случае придется каждый раз реплицировать всю инфраструктуру. Следовательно, у вас будет несколько кластеров Kubernetes. На запуск каждого кластера уходит не менее 15 минут, а его стоимость на AWS составляет 72 долл. в месяц.
Гораздо лучшей альтернативой было бы повторное использование одного кластера Kubernetes и создание на его основе нескольких сред. Таким образом, вы платите за один кластер, и вам не нужно ждать создания нового кластера каждый раз, когда вы создаете новую среду.
Именно для этого и существует
Layerform. Layerform позволяет инженерам разбивать файлы Terraform на компонуемые слои. Таким образом, команды могут иметь общий базовый слой для кластера Kubernetes и несколько вышестоящих слоев с Elasticsearch, Kibana и даже другими необходимыми им бессерверными компонентами, такими как Lambdas, очереди SQS или балансировщики нагрузки.
В этой статье я расскажу о том, как работают слои, как разбить файлы Terraform на компонуемые слои и продемонстрирую несколько вариантов использования слоев. Эти случаи включают создание сред разработки, похожих на производственные, и настройку ссылок предварительного просмотра запросов на поставку для любого типа приложений.