Репозиторий содержит набор манифестов Terraform для развертывания отказоустойчивой высокодоступной инфраструктуры типового web-приложения в VK Cloud.
В каждой из зон доступности:
- Продвинутый облачный маршрутизатор
- ВМ-участник кластера БД
- ВМ для back части web-приложения
- ВМ для front части web-приложения
- ВМ для сервиса мониторинга доступности приложения и управления DNS записями
- Облачный балансировщик нагрузки
В одной из зон доступности создаётся jump-сервер для задач эксплуатации web-приложения.
-
Установка Terraform и его конфигурирование для работы с VK Cloud
-
В директории со склонированным репозиторием создаем файл creds.auto.tfvars и наполняем его следующим содержимым:
provider_auth_url = "https://infra.mail.ru:35357/v3/" provider_username = "< Логин пользователя VK Cloud >" provider_password = "< Пароль пользователя VK Cloud >" provider_project = "< ID проекта со страницы настроек проекта (вкладка Terraform) в ЛК >" key_pair_name = "< Название ключевой пары SSH из настроек проекта в ЛК >"
-
Репозиторий содержит файл vkcs_provider.tf в котором обычно менять ничего не нужно, но если требуется конкретная версия terraform провайдера, то можно указать её в блоке terraform {} в параметре version:
terraform { required_providers { vkcs = { source = "vk-cs/vkcs" version = "~> 0.7.4" } } } provider "vkcs" { username = var.provider_username password = var.provider_password project_id = var.provider_project region = "RegionOne" auth_url = var.provider_auth_url }
-
Репозиторий содержит файл zones.auto.tfvars со списком зон доступности VK Cloud, в которых будут развернуты ВМ, продвинутые маршрутизаторы и балансировщики нагрузки:
zones = { "zone1" = "GZ1" "zone2" = "ME1" "zone3" = "MS1" }
-
В файле flavors.auto.tfvars указаны флейворы, которые будут использованы при разворачивании ВМ:
db_flavor = "STD3-2-4" back_flavor = "STD3-2-2" front_flavor = "STD3-2-2" dns_wd_flavor = "STD3-2-2"
В каталоге с репозиторием после подготовки окружения выполняем следующие шаги:
-
Инициализация
terraform init
-
Для ознакомления со списком изменений, которые будут применены во время выполнения манифеста
terraform plan
-
Для применения изменений в проекте
terraform apply
- Разворачивание на ВМ с именами zone1-db, zone2-db, zone3-db отказоусточивого кластера СУБД (PostgreSQL + Patroni + Virtual IP Manager)
- Разворачивание back части web-приложения на ВМ с именами zone(1,2,3)-back
- Разворачивание front части web-приложения на ВМ с именами front(1,2,3)-back
- Настройка DNAT на продвинутых маршрутизаторах с пренаправлением трафика на облачный балансировщик нагрузки в той же зоне доступности
- Настройка на ВМ zone(1,2,3)-dns-watchdog сервиса для мониторинга доступности web-приложения на публичных IP-адресах и управления А записями в сервисе DNS проекта VK Cloud.