Для этого можно написать несколько файлов
.tf
и выполнить команду terraform apply
для инициализации кластера Kubernetes и развёртывания на нем нескольких подсистем.![image](https://webcf.waybackmachine.org/web/20230930081003im_/https://habrastorage.org/webt/0z/aa/rk/0zaarkn1pr3hplshmqmzacdobbc.png)
Теперь предположим, что вам нужны и другие экземпляры стека Elastic, которые можно использовать для демонстрации. В этом случае придется создать новые рабочие пространства Terraform и выполнить
terraform apply
несколько раз.Проблема такого подхода заключается в том, что в этом случае придется каждый раз реплицировать всю инфраструктуру. Следовательно, у вас будет несколько кластеров Kubernetes. На запуск каждого кластера уходит не менее 15 минут, а его стоимость на AWS составляет 72 долл. в месяц.
![image](https://webcf.waybackmachine.org/web/20230930081003im_/https://habrastorage.org/webt/xx/y4/_1/xxy4_17-0kljly-rdap2kyc60pc.png)
Гораздо лучшей альтернативой было бы повторное использование одного кластера Kubernetes и создание на его основе нескольких сред. Таким образом, вы платите за один кластер, и вам не нужно ждать создания нового кластера каждый раз, когда вы создаете новую среду.
![image](https://webcf.waybackmachine.org/web/20230930081003im_/https://habrastorage.org/webt/it/ge/tt/itgettzkr5zo8faw8uljk2rdxrg.png)
Именно для этого и существует Layerform. Layerform позволяет инженерам разбивать файлы Terraform на компонуемые слои. Таким образом, команды могут иметь общий базовый слой для кластера Kubernetes и несколько вышестоящих слоев с Elasticsearch, Kibana и даже другими необходимыми им бессерверными компонентами, такими как Lambdas, очереди SQS или балансировщики нагрузки.
![image](https://webcf.waybackmachine.org/web/20230930081003im_/https://habrastorage.org/webt/qq/hu/la/qqhula_kpv0xym0mstgsy5csxje.png)
В этой статье я расскажу о том, как работают слои, как разбить файлы Terraform на компонуемые слои и продемонстрирую несколько вариантов использования слоев. Эти случаи включают создание сред разработки, похожих на производственные, и настройку ссылок предварительного просмотра запросов на поставку для любого типа приложений.