Skip to content
EN

Что такое GitOps

Коротко:

GitOps — paradigm, где entire system state (application manifests, infra) хранится в Git, а agents в cluster continuously sync actual state с desired. Термин coined Weaveworks 2017. 4 principles: **Declarative**, **Versioned in Git**, **Automatically applied**, **Continuously reconciled**. Tools: ArgoCD (most popular), Flux CD, Jenkins X. Replaces: kubectl apply в CI/CD scripts.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить свой сайт →

Подробности

  • Repo structure: Dev manifests + prod manifests + environment overlays
  • Pull-based: agent в cluster pulls changes (vs CI push)
  • Drift detection: alerts если cluster state ≠ Git
  • Rollback = git revert + auto-sync
  • Auth: agents use read-only Git + K8s RBAC

Пример

# ArgoCD Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  source:
    repoURL: https://github.com/me/manifests
    targetRevision: main
    path: apps/my-app
  destination:
    server: https://kubernetes.default.svc
    namespace: my-app
  syncPolicy:
    automated: { prune: true, selfHeal: true }

Смежные термины

Что такое GitOps?

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

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

GitOps предлагает ряд преимуществ для команд разработки и операций:

  • Упрощение процессов развертывания: Используя Git как единую точку управления, команды могут легко развертывать и откатывать изменения, используя простые команды.
  • Улучшенная безопасность: Все изменения проходят через процесс ревью в Git, что повышает уровень контроля и безопасности.
  • Автоматизация: GitOps позволяет интегрировать CI/CD инструменты для автоматизации процессов развертывания, что снижает вероятность ошибок.
  • Легкость в управлении конфигурациями: Декларативные конфигурации позволяют легко управлять состоянием системы и ее компонентами.

Практический пример GitOps

Рассмотрим пример использования GitOps для развертывания приложения на Kubernetes с помощью инструмента Argo CD. В этом примере мы создадим простое приложение и настроим автоматическое развертывание через Git.

Шаг 1: Подготовка Git-репозитория

Создайте новый Git-репозиторий и добавьте в него файл манифеста Kubernetes для вашего приложения:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app-image:latest
        ports:
        - containerPort: 80

Шаг 2: Установка Argo CD

Установите Argo CD в ваш кластер Kubernetes:

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

Шаг 3: Настройка приложения в Argo CD

После установки Argo CD, создайте приложение, ссылающееся на ваш Git-репозиторий:

argocd app create my-app \
  --repo https://github.com/your-repo/my-app.git \
  --path . \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

Шаг 4: Развертывание приложения

Теперь, когда приложение настроено, вы можете развернуть его:

argocd app sync my-app

После выполнения этой команды Argo CD автоматически развернет ваше приложение в Kubernetes, используя манифест из Git.

Таким образом, GitOps упрощает управление приложениями и инфраструктурой, позволяя командам оперативно реагировать на изменения и поддерживать стабильность систем.

Больше по теме

Часто задаваемые вопросы

GitOps vs CI/CD?

Overlap. CI/CD — pipeline, который deploy. GitOps — pattern of operating systems through Git as truth. GitOps часто uses CI для build image + PR to manifest repo.

Secrets в Git — как?

НЕ plain. Tools: SealedSecrets (encrypted YAML), External Secrets Operator (sync from Vault), SOPS (Mozilla).

Monorepo или split?

Split: app-code repo + manifests repo. Avoids CI reinvocation при manifest-only changes. Популярнее в 2026.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.