Манифесты для создания Cloud Native приложения c помощью Kubernetes и DBaaS
Приложение работает в Managed Kubernetes, образ контейнера в Container Registry. Визуализация в Grafana , которая развернута на отдельной виртуальной машине, на которой также развернут GitLab. Данные для приложения в PostgreSQL, которая работает в Managed Database.
Наша задача: Подготовить pipeline в Gitlab, с помощью которого будет автоматизирован процесс сборки и деплоя приложения (build → push → deploy)
Создать в панели управления проект, пользователя и выдать ему права администратора проекта. В дальнейшем нам понадобятся имя пользователя, пароль, его ID.
Добыть в настройках профиля ключ API.
Заполнить secrets.tfvars по подобию secrets-example.tfvars.
Сгенерировать логин/пароль для DBaaS.
Создать новый реестр Container registry и получить новый токен.
Выполнить подготовку инфраструктуры
terraform init
terraform apply -var-file=secrets.tfvars -target=module.Pre_Cloud
Создать Базу данных
terraform apply -var-file=secrets.tfvars -target=module.DBaaS
Создать кластер Managed Kubernetes Selectel (MKS).
terraform apply -var-file=secrets.tfvars -target=module.MKS
Во время выполнения этой части, будет локально сохранен kubeconfig. Он будет скопирован на control node в следующем шаге.
terraform apply -var-file=secrets.tfvars -target=module.Cloud
Для того, чтобы кластер MKS мог скачивать образы из CRaaS, нужно добавить ключ. Для этого потребуется выполнить две команды. Обратите внимание, что во второй команде нужно передать путь до конифга находящегося в домашней папке пользователя.
docker login cr.selcloud.ru
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=~/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
До встречи в эфире!
Для удаления всех ресурсов используйте команду destroy
terraform destroy -var-file=secrets.tfvars