Фреймворк на основе CDKTF для развертывания облачной инфраструктуры любой сложности
Развертывание необходимой облачной инфраструктуры из одного простого yaml-файла. Данный инструмент разрабатывается и поддерживается компанией ITSumma, мы с радостью ответим на ваши вопросы в телеграм чате …
yarn install
cdktf get
Опционально (для установки различных компонентов в k8s-кластера)
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
cdktf diff <stack_name>
cdktf deploy <stack_name>
cdktf output <stack_name> --outputs-file <path_to_output_file> --outputs-file-include-sensitive-outputs true
docker run --rm --name kulebiac -v ${PWD}/config.yaml:/app/config.yaml --env-file ${PWD}/.env -ti ghcr.io/itsumma/kulebiac/kulebiac:v1.6.0 bash
# далее внутри докера выполняем
cdktf diff production
cdktf deploy production
Для запуса нужен предварительно настроенный раннер, который может запускать докер образы
В код репозитория кладём config.yaml
в Settings гитлаба в секцию CI/CD прописываем нужные нам Variables: KULEBIAC_VERSION, KULEBIAC_YC_TOKEN, KULEBIAC_CLOUD_ID, KULEBIAC_FOLDER_ID, KULEBIAC_STATE_BUCKET_NAME, KULEBIAC_ACCESS_KEY, KULEBIAC_SECRET_KEY, KULEBIAC_STACK
Прописываем в .gitlab-ci.yml примерно следующее
stages:
- deploy
deploy:
stage: deploy
image: ghcr.io/itsumma/kulebiac/kulebiac:${KULEBIAC_VERSION}
variables:
YC_TOKEN: ${KULEBIAC_YC_TOKEN}
CLOUD_ID: ${KULEBIAC_CLOUD_ID}
FOLDER_ID: ${KULEBIAC_FOLDER_ID}
STATE_BUCKET_NAME: ${KULEBIAC_STATE_BUCKET_NAME}
ACCESS_KEY: ${KULEBIAC_ACCESS_KEY}
SECRET_KEY: ${KULEBIAC_SECRET_KEY}
script:
- cp config.yaml /app && cd /app
- cdktf diff ${KULEBIAC_STACK} || cdktf diff ${KULEBIAC_STACK} #если раннер в России, первая команда упадёт с ошибкой изза блокировок со стороны hashicorp. Нужно просто повторить её
- cdktf deploy ${KULEBIAC_STACK} --auto-approve
tags:
- docker
(tags прописываем соответственно настроенному раннеру)
Описание облачной инфраструктуры в виде terraform сценариев может занимать очень много времени, модули, как правило, получаются довольно специфичными и тяжелыми в реиспользовании и не обеспечивают необходимого PaaS подхода к описанию инфраструктуры – каждый контур, как правило, описывается отдельно и имеет свой порядок и план выполнения. Мы разработали данный инструмент для возможности предоставления именно платформенного подхода к использованию облачных ресурсов в рамках методологий IaC и DevOps:
Kulebiac реализован на базе инструмента Cdktf, в который мы портировали наши Terraform-модули (в частности - для YandexCloud) в TypeScript-формат (не через генерацию биндингов), что позволило нам:
В итоге работы инструмента вы получаете сгенерированный в json формате файл конфигурации terraform, который применит все в конкретном каталоге. Также, основываясь на сущности STACK предоставляемой cdktf, с помощью единого конфигурационного файла можно описать несколько изолированных друг от друга окружений (в данный момент - на основе YandexCloud - окружения можно сетапить в разные Folder/Cloud - в дальнейшем, использовать абсолютно различные провайдеры) - аналогичный пример - https://terragrunt.gruntwork.io/
Apache License 2.0, see LICENSE.
Ссылки:
Группа Telegram
Разрабатывается и поддерживается itsumma.ru