Модуль terraform-manager предоставляет инструменты для работы с состоянием Terraform в кластере DKP.
Подробнее с настройками модуля можно ознакомиться в соответствующем разделе документации.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме показано, что контейнеры разных подов взаимодействуют друг с другом напрямую. Фактически они взаимодействуют через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса указано над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме все поды изображены в одной реплике.
Архитектура модуля terraform-manager на уровне 2 модели C4 и его взаимодействия с другими компонентами Deckhouse Kubernetes Platform (DKP) изображены на следующей диаграмме:

Компоненты модуля
Модуль состоит из следующих компонентов:
-
Terraform-auto-converger — периодически (по умолчанию раз в час) проверяет состояние Terraform и применяет недеструктивные изменения к ресурсам инфраструктуры.
Компонент работает только с базовой инфраструктурой кластера. Узлы кластера автоматически к требуемому состоянию не приводятся. Периодичность проверки задается параметром
autoConvergerPeriod.Состоит из следующих контейнеров:
- to-tofu-migrator — init-контейнер для миграции состояния Terraform в OpenTofu. В контейнере запускается утилита
dhctlс командойconverge-migration; - converger — основной контейнер, в котором запускается утилита
dhctlс командойconverge-periodical; - kube-rbac-proxy — сайдкар-контейнер с авторизующим прокси на основе Kubernetes RBAC для организации защищенного доступа к метрикам контейнера converger. Является Open Source-проектом.
- to-tofu-migrator — init-контейнер для миграции состояния Terraform в OpenTofu. В контейнере запускается утилита
-
Terraform-state-exporter — проверяет состояние Terraform и экспортирует связанные с ним метрики.
Состоит из следующих контейнеров:
- exporter — основной контейнер, в котором запускается утилита
dhctlс командойterraform converge-exporter; - kube-rbac-proxy — сайдкар-контейнер с авторизующим прокси на основе Kubernetes RBAC для организации защищенного доступа к метрикам контейнера exporter.
- exporter — основной контейнер, в котором запускается утилита
Взаимодействия модуля
Модуль взаимодействует со следующими компонентами:
-
Kube-apiserver:
- чтение и запись секрета с состоянием Terraform;
- авторизация запросов на получение метрик.
-
Облачная инфраструктура (или система виртуализации) — управляет базовыми инфраструктурными ресурсами и приводит их к желаемому состоянию.
С модулем взаимодействуют следующие внешние компоненты:
- prometheus-main — сбор метрик terraform-auto-converger и terraform-state-exporter.