3. Автоматизация и процессы внедрения
Теперь мы сказали, что после того, как изменения сливаются в основную ветку, они будут автоматически применены к инфраструктуре через конвейер непрерывной доставки (CD pipeline).
В GitOps у нас есть два способа применить эти изменения:
- Развёртывание по запросу (Pull Deployment)
В этой модели в среде развёртывания, например в кластере k8s, установлен агент, который активно извлекает изменения из самого репозитория git.
Агент регулярно отслеживает и сравнивает желаемое состояние с фактическим состоянием, присутствующим в среде, где он работает. Если он обнаруживает разницу, то извлекает и применяет изменения, чтобы привести среду к желаемому состоянию, определённому в репозитории.
Чаще всего применимо в контексте Kubernetes и контейнерных сред.
Популярные примеры: Argocd, Fluxcd.
- Развёртывание по отправке (Push Deployment)
Это традиционный способ, который мы знаем.
В этой модели мы явно определяем задачи в конвейере непрерывной интеграции/непрерывной доставки (CI/CD) приложения, которые выполнят команды для обновления инфраструктуры или развёртывания новой версии приложения в среде развёртывания.
4. Лёгкий откат
Теперь мы знаем, что изменения в репозитории git автоматически синхронизируются со средой развёртывания.
Мы легко можем воспользоваться мощью Git для отслеживания истории изменений и отката к любому предыдущему состоянию, просто используя команду git revert.
Заключение
В заключение, GitOps - это мощный подход, который объединяет принципы контроля версий, рабочего процесса Git и автоматизации, чтобы сделать Инфраструктуру как код (IaC) или, более обобщённо, любой код (xaC), более плавным, стабильным и безопасным.
Перевод с некоторыми авторскими правками.
Автор оригинала: Arafet Ben Kilani.