← Back to notes

GitOps — автоматизация
инфраструктуры через Git

2025-10-28


Что такое GitOps

GitOps — operating model для декларативной инфраструктуры и приложений, где Git хранит desired state, а controller/agent приводит runtime-систему к этому состоянию.

OpenGitOps формулирует четыре принципа: declarative desired state, immutable/versioned source of truth, changes через approved Git operations, continuous reconciliation by software agents.

Как работает GitOps

  1. Декларативное описание инфраструктуры
    Kubernetes manifests, Helm/Kustomize или Terraform/OpenTofu configs описывают desired state.

  2. Git как источник истины
    Репозиторий содержит версионированное состояние. Изменение — commit + review + merge.

  3. Reconciliation loop GitOps-controller (Argo CD, Flux) сравнивает live state с Git и применяет diff вручную или автоматически, в зависимости от policy.

  4. Аудит и откат изменений
    История Git даёт audit trail. Rollback обычно делается через git revert, чтобы source of truth тоже изменился.


Инструменты


Преимущества

  • Audit trail: кто изменил desired state и через какой review.
  • Воспроизводимость: окружение можно пересобрать из Git + артефактов.
  • Drift detection: controller видит расхождение live state и Git.
  • Откат: git revert возвращает desired state, controller применяет его.

Ограничения

  • GitOps не чинит broken desired state: плохой commit будет воспроизведён так же стабильно, как хороший.
  • Auto-sync без policy gates может быстро распространить ошибку.
  • Secrets нельзя хранить plaintext в Git; нужны SOPS, Sealed Secrets, External Secrets или Vault-интеграция.
  • Для Terraform-style инфраструктуры нужен отдельный controller/workflow, потому что Kubernetes GitOps-controller сам по себе не управляет cloud API без CRD/operator слоя.
  • Ручные изменения через kubectl создают drift и могут быть перезаписаны controller'ом.

Практический baseline

  • Pin образов по digest или immutable tag, не latest.
  • Разделяй app repo и environment/config repo, если нужен controlled promotion.
  • Включай diff/health checks перед auto-sync.
  • Для prod — policy checks до merge: schema validation, kubeconform, OPA/Kyverno, secret scanning.
  • Rollback runbook должен начинаться с git revert; прямой rollback в controller — аварийная операция.

Ссылки

GitOps — автоматизация инфраструктуры через Git | Aleksandr Suprun