Print this page

GitOps + k8s — manage infra from Git

06 October 2025

GitOps + Kubernetes — управление инфраструктурой и приложениями через Git

“Git — это не только про код. Это источник истины для всей инфраструктуры. Добро пожаловать в GitOps.”


Что такое GitOps

GitOps — это подход, при котором вся конфигурация инфраструктуры и приложений хранится в Git, а состояние кластера автоматически синхронизируется с этим репозиторием.

  • Git → источник истины
  • Pull Request → способ внесения изменений
  • CI/CD → автоматизация тестирования и проверки
  • GitOps-оператор → применяет манифесты в Kubernetes

В итоге:

  • Все изменения версионируются
  • Можно откатиться на любой коммит
  • Деплой → просто git push
  • Прозрачность, контроль, безопасность

Основные принципы GitOps

Принцип Описание
Single Source of Truth Вся инфраструктура описана декларативно в Git
Declarative Манифесты описывают желаемое состояние, а не инструкции
Automated Reconciliation GitOps-оператор следит за дрейфом и автоматически синхронизирует
Continuous Delivery Новое состояние → PR → merge → автоприменение
Audit & Rollback Git хранит историю изменений и позволяет откатиться к любому состоянию

GitOps + Kubernetes: как это работает

  1. Ты коммитишь манифесты приложения или инфраструктуры в Git
  2. GitOps-оператор (например, Argo CD или Flux) мониторит репозиторий
  3. Он подтягивает изменения и применяет их к кластеру
  4. Постоянно следит, чтобы кластер ≡ Git. Если кто-то что-то ручками изменил — GitOps вернёт всё назад
Developer  →  Git (PR)  →  Merge
     ↓
GitOps Controller (ArgoCD/Flux)
     ↓
Kubernetes Cluster ← синхронизация

Типовая структура репозитория

gitops-repo/
├── apps/
│   ├── frontend/
│   │   ├── kustomization.yaml
│   │   └── deployment.yaml
│   └── backend/
│       ├── kustomization.yaml
│       └── deployment.yaml
└── infra/
    ├── namespaces/
    ├── network-policies/
    ├── cert-manager/
    └── ingress/

Все изменения идут через PR → review → merge → Argo CD или Flux их подхватывает.


Пример с Argo CD

Argo CD — один из самых популярных GitOps-инструментов для Kubernetes.

1️⃣ Установка Argo CD

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

2️⃣ Доступ в UI

kubectl port-forward svc/argocd-server -n argocd 8080:443

Зайди на https://localhost:8080 и залогинься (логин admin, пароль — в secret/argocd-initial-admin-secret).

3️⃣ Подключение репозитория

В UI → Settings → Repositories → Add Git → вставь URL и токен (SSH/HTTPS).

4️⃣ Создание Application

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: frontend
  namespace: argocd
spec:
  project: default
  source:
    repoURL: 'https://github.com/example/gitops-repo.git'
    path: apps/frontend
    targetRevision: main
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: frontend
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Argo CD автоматически задеплоит и будет поддерживать синхронизацию.


GitOps и CI/CD

GitOps не заменяет CI, а дополняет его:

  • CI (GitLab CI, GitHub Actions) → собирает образы, пушит в registry
  • GitOps (Argo/Flux) → подтягивает новые манифесты и деплоит

Типичный flow:

  1. CI собирает Docker-образ и пушит в registry
  2. CI обновляет values.yaml или манифесты с новым тегом образа → коммитит в GitOps репозиторий
  3. Argo CD замечает изменения и обновляет кластер

Безопасность GitOps

GitOps повышает безопасность, но требует правильной настройки:

  • Только GitOps-оператор должен иметь доступ на apply в кластер
  • Запретить ручные kubectl apply в проде
  • Использовать SSH и read-only токены для Git
  • ‍Все изменения идут через PR и review
  • Argo CD RBAC — ограничивать, кто может синхронизировать и изменять приложения
  • Secrets — выносить в sealed-secrets, SOPS или External Secrets

Расширенные сценарии

  • Multi-cluster — один GitOps репозиторий, несколько кластеров (dev/stage/prod)
  • Multi-tenant — разные команды → разные namespaces или проекты в Argo CD
  • Helm + GitOps — GitOps синхронизирует Helm-чарты (Argo умеет сам рендерить)
  • Drift Detection — автооткат при ручных изменениях в кластере
  • Rollback через Git revert — мгновенный откат до стабильного коммита

Заключение

GitOps — это не просто модное слово. Это фундаментальный сдвиг в управлении инфраструктурой:

  • Прозрачность
  • Контроль изменений
  • Лёгкие откаты
  • Автоматизация

С GitOps твой Kubernetes живёт не “по наитию DevOps-инженера”, а строго по Git — и это .