Перейти к содержимому

Владение инфраструктурой и IaC

Gateway лучше всего работает там, где у каждого объекта инфраструктуры есть один понятный владелец. Его можно использовать вместе с Terraform, OpenTofu, Ansible, облачными панелями и существующим CI — заменять все эти инструменты не требуется.

Простое правило: один ресурс — один владелец. Несколько систем могут наблюдать за одним ресурсом, но не должны одновременно и постоянно перезаписывать его.

Уровень Обычный владелец Примеры
Основа у провайдера Terraform, OpenTofu или облачная платформа сети, виртуальные машины, firewall, управляемые хранилища, DNS-зоны, места хранения резервных копий
Базовая настройка хоста Ansible, конвейер образов или команда эксплуатации операционная система, пользователи, системные политики, Docker, диски, защита конечной точки
Повседневное управление сервисами Gateway ноды, Routes, сертификаты, рабочие нагрузки, Compose Projects, управляемые базы данных, привязки, права и история операций
Выпуск приложения система контроля версий и Gateway ревизия репозитория, сборка, артефакт, развёртывание и откат
Независимые доказательства мониторинг, SIEM и система резервного копирования долговременные метрики и логи, независимый аудит, внешние копии для восстановления

Это отправная точка, а не обязательный набор инструментов. Небольшая команда может подготовить хост вручную и передать Gateway только сервисный уровень. Крупная организация может создавать каждый хост через Terraform и подключать его к Gateway после проверки безопасности.

Определите владельца до подключения ресурса

Заголовок раздела «Определите владельца до подключения ресурса»

До переноса существующего ресурса в Gateway зафиксируйте:

  1. какая система имеет право его изменять;
  2. какая система только наблюдает за ним;
  3. где хранится эталонное состояние;
  4. кто согласует аварийные изменения;
  5. как аварийное изменение будет перенесено в эталонное состояние.

Например, если DNS-запись принадлежит Terraform, не поручайте Gateway постоянно перезаписывать ту же запись. Оставьте DNS в Terraform и направьте запись на Route из Gateway либо осознанно передайте её жизненный цикл Gateway и удалите из состояния Terraform.

При двойном управлении возникает рассинхронизация: один инструмент применяет корректное изменение, другой видит неожиданное значение и возвращает своё. Со стороны это выглядит как случайные сбои, хотя обе системы выполняют заданные правила.

Типичные конфликты:

  • Terraform и Gateway одновременно управляют одной DNS-записью;
  • Ansible и Gateway заменяют одну конфигурацию nginx;
  • скрипт на хосте перезапускает или удаляет Containers, принадлежащие Deployment или Compose Project;
  • внешний инструмент меняет пользователей базы данных, созданных для управляемой привязки;
  • CI развёртывает ту же рабочую нагрузку, которую собирает и публикует Gateway.

Если двум системам необходимо работать рядом, проведите явную границу. Terraform может владеть виртуальной машиной и firewall, а Gateway — приложениями внутри неё. Ansible может устанавливать Docker, а Gateway — управлять его ресурсами. Внешняя система резервного копирования может читать базу данных, пока Gateway управляет жизненным циклом сервиса.

Во время инцидента прямое изменение на хосте иногда оказывается самым безопасным действием. Считайте его временным исключением:

  1. запишите ресурс, команду или настройку, оператора, время и причину;
  2. приостановите автоматизацию, которая может перезаписать изменение;
  3. восстановите сервис и сохраните диагностические данные;
  4. решите, какая система должна принять новое состояние;
  5. осознанно синхронизируйте состояние и удалите временное исключение.

Не оставляйте успешное аварийное исправление как постоянное незадокументированное расхождение. Иначе следующий обычный деплой может его отменить.

Для большинства команд разумно начать так:

  • оставить аккаунты провайдеров, сети, хосты и внешние резервные копии в существующих инструментах;
  • использовать Gateway для повседневного управления приложениями, входящим трафиком, доступом к базам данных и правами;
  • хранить долговременный мониторинг и доказательства для комплаенса в независимых системах;
  • передавать Gateway новые семейства ресурсов только после проверки их восстановления и границ владения.

Перейдите к пилотному внедрению, чтобы проверить эту модель на некритичной рабочей нагрузке.