GitOps
GitOps — операции через Git
Суть в одном предложении
GitOps — это подход к управлению инфраструктурой и деплоем, при котором Git становится единственным источником истины для состояния системы.
Краткое определение
GitOps — это практика DevOps, при которой инфраструктура и конфигурации описываются в Git-репозитории, а изменения автоматически применяются к окружению через контроллер или CI/CD.
Оригинал и перевод
- Язык: английский
- Оригинал: GitOps
- Буквальный перевод: операции через Git
Синонимы и варианты написания
- Git-based deployment
- Git-driven infrastructure
- Git as source of truth
Происхождение
Термин был популяризирован компанией Weaveworks в 2017 году в контексте Kubernetes. Подход вырос из идей Infrastructure as Code и Continuous Deployment.
Где используется
- Kubernetes-кластеры
- Cloud-инфраструктура
- Микросервисы
- CI/CD системы
- SaaS и high-load проекты
Когда это важно
GitOps становится критичным, когда:
- инфраструктура сложная и распределённая
- требуется аудит изменений
- несколько команд работают с конфигурацией
- необходима воспроизводимость окружений
Подробное объяснение
Классический деплой:
- Разработчик пушит код
- CI запускает деплой
- Скрипт изменяет сервер
GitOps работает иначе:
- В Git хранится желаемое состояние инфраструктуры
- Контроллер (например, ArgoCD или Flux) отслеживает репозиторий
- Если состояние кластера отличается от Git — изменения автоматически применяются
Git становится:
- источником истины
- логом изменений
- системой отката
- механизмом аудита
Пример GitOps-подхода
В репозитории хранится Kubernetes-манифест:
apiVersion: apps/v1 kind: Deployment metadata: name: app spec: replicas: 3
Разработчик меняет:
replicas: 5
Коммит → push → контроллер синхронизирует кластер. Никакого SSH на прод.
Основные принципы GitOps
- Declarative configuration
- Versioned and immutable
- Automated synchronization
- Continuous reconciliation
Чем GitOps отличается от CI/CD
CI/CD:
- Пайплайн пушит изменения на сервер.
GitOps:
- Сервер сам «тянет» изменения из Git.
Это модель pull вместо push.
Что не является GitOps
- Ручной деплой по SSH
- FTP-загрузка файлов
- Git без автоматической синхронизации
Аналоги и связанные термины
- CI/CD
- Infrastructure as Code
- Kubernetes
- Continuous Deployment
- Declarative Configuration
Пример использования
«В продакшене используется GitOps: все изменения инфраструктуры проходят через pull request и автоматически применяются в Kubernetes.»
Мини-FAQ
GitOps работает только с Kubernetes? Нет, но чаще всего используется именно там.
Можно ли применять GitOps к VPS без Kubernetes? Да, если деплой управляется через declarative-конфигурации и автоматическую синхронизацию.
Смотри также
- CI/CD
- Infrastructure as Code
- Kubernetes
- Deployment