← назад к разделу

Классический деплой в Kubernetes — это kubectl apply или helm upgrade из пайплайна: конвейер имеет доступ в кластер и «пушит» изменения. Проблема — кластер и репозиторий легко расходятся: кто-то поправил объект руками, и что реально крутится в проде, уже не совпадает с тем, что в Git. ArgoCD переворачивает подход: не пайплайн пушит в кластер, а кластер сам подтягивает состояние из Git. Это называется GitOps.

Что это

ArgoCD — инструмент непрерывной доставки (CD) для Kubernetes по модели GitOps. Идея в одной фразе: Git — источник правды. В репозитории лежат желаемые манифесты (или Helm-чарты), а ArgoCD, живущий внутри кластера, постоянно сравнивает «что в Git» и «что в кластере» и приводит кластер к состоянию из Git.

Что это даёт:

  • Декларативность. Хотите что-то изменить в проде — делаете commit в Git, а не kubectl руками. Вся история изменений — в системе контроля версий, с ревью через pull request.
  • Автосинхронизация и лечение дрейфа. ArgoCD замечает расхождение (drift): если объект в кластере поправили мимо Git, он подсветит это или вернёт как в репозитории (self-heal).
  • Наглядность. В UI видно состояние каждого приложения: синхронизировано с Git или нет, здорово ли оно.

Как выглядит

Само приложение ArgoCD описывается объектом Application: где лежит исходник (репозиторий + путь) и куда разворачивать (кластер + namespace):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: orders
  namespace: argocd
spec:
  source:
    repoURL: https://git.example.com/infra/orders.git
    targetRevision: main
    path: deploy/prod          # тут лежат манифесты или Helm-чарт
  destination:
    server: https://kubernetes.default.svc
    namespace: orders
  syncPolicy:
    automated:
      prune: true              # удалять то, что убрали из Git
      selfHeal: true           # возвращать состояние из Git при дрейфе

Дальше деплой выглядит так: разработчик правит deploy/prod в Git и открывает pull request; после мержа ArgoCD видит новую ревизию main и сам применяет её в namespace orders. Никакого kubectl из пайплайна — только commit.

Коротко

  • ArgoCD — GitOps-инструмент непрерывной доставки в Kubernetes: Git — источник правды, а не пайплайн с доступом в кластер.
  • Кластер сам подтягивает желаемое состояние из репозитория, а не получает push извне.
  • Объект Application задаёт: откуда (repo + path) и куда (кластер + namespace) разворачивать.
  • automated + selfHeal держат кластер синхронным с Git и чинят ручной дрейф; вся история изменений — в Git с ревью.

Что почитать дальше

  • Ветки и релизный цикл — где GitOps встаёт в конвейер доставки.
  • Helm — чарты, которые ArgoCD часто и разворачивает.
  • Деплой в Kubernetes — манифесты и rolling update под капотом.