Развертывание необходимой облачной инфраструктуры из одного простого yaml-файла. Данный инструмент разрабатывается и поддерживается компанией ITSumma, мы с радостью ответим на ваши вопросы в телеграм чате …
- YandexCloud
yarn install
cdktf get
- Создать каталог (1 каталог == 1 окружение)
- Получить API-token для взаимодействия с YandexCloud
- В каталоге создать s3-бакет для хранения state
- В каталоге создать сервис-аккаунт, назначить ему роль admin и создать статический ключ доступа (для взаимодействия с S3-Storage)
Опционально (для установки различных компонентов в k8s-кластера)
- Install Helm
helm repo add jetstack https://charts.jetstack.io
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm repo update
- cp .env.example .env
- заполнить .env | export ENV_NAME_1=<val_1> ENV_NAME_2=<val_2>...
- подготовить файл конфигурации config.yaml - Структура
cdktf diff <stack_name>
cdktf deploy <stack_name>
cdktf out <stack_name> --outputs-file <path_to_output_file> --outputs-file-include-sensitive-outputs true
Описание облачной инфраструктуры в виде terraform сценариев может занимать очень много времени, модули, как правило, получаются довольно специфичными и тяжелыми в реиспользовании и не обеспечивают необходимого PaaS подхода к описанию инфраструктуры – каждый контур, как правило, описывается отдельно и имеет свой порядок и план выполнения. Мы разработали данный инструмент для возможности предоставления именно платформенного подхода к использованию облачных ресурсов в рамках методолигии IaC и DevOps:
- Инфраструктура описана в доступном формате (yaml)
- Возможность довольно легко и быстро разворачивать новые окружения без дополнительного изменения декларативного описания инфраструктуры
- Вся инфраструктура разворачивается за один проход инструмента
Kulebiac реализован на базе инструмента Cdktf, в который мы портировали наши Terraform-модули (в частности - для YandexCloud) в TypeScript-формат (не через генерацию биндингов), что позволило нам:
- гораздо гибче работать с вложенными итерациями по массивам
- динамически кодом создавать дополнительные вспомогательные провайдеры - например, после создания двух кластеров k8s, через вспомогательные провайдеры можно установить в эти кластеры различные компоненты (ingress-контроллер, cert-manager)
- использовать строгую типизацию для входных параметров модуля с возможностью использования опциональных переменных с дефолтными значениями (исходно в hcl так нельзя)
В итоге работы инструмента вы получаете сгенерированный в json формате файл конфигурации terraform, который применит все в конкретном каталоге. Также, основываясь на сущности STACK предоставляемой cdktf, с помощью единого конфигурационного файла можно описать несколько изолированных друг от друга окружений (в данный момент - на основе YandexCloud - окружения можно сетапить в разные Folder/Cloud - в дальнейшем, использовать абсолютно различне провайдеры) - аналогичный пример - https://terragrunt.gruntwork.io/
- Нужна скорая инфраструктура для стартапа – Kubernetes + стандартные аддоны + Postgres - пример №1
- результат – VPC, Nat-Instance, Kubernetes (+ autoscaling) + Postgres, S3-PVC
- Нужно dev и prod окружение, Kubernetes, Postgres, RabbitMQ, Gitlab - пример №2
- результат – раздельные контуры на уровне сети, безопасность, instance с cloud-init, S3-PVC, прерываемые ASG на dev Kubernetes
- 1.0.0
Apache License 2.0, see LICENSE.
Ссылки:
Группа Telegram
Разрабатывается и поддерживается itsumma.ru