GitOps на практике: ArgoCD vs Flux — что выбрать в 2026
GitOps — это не просто модное слово. Это операционная модель, при которой Git является единственным источником истины для состояния инфраструктуры и приложений. ArgoCD и Flux — два главных инструмента для реализации этого подхода. Мы используем оба в production и расскажем, когда что выбирать.
Что такое GitOps и почему это важно
Традиционный подход к деплою: разработчик запускает kubectl apply или helm upgrade вручную, или через CI-пайплайн с прямым доступом к кластеру. Проблема — состояние кластера расходится с тем, что написано в репозитории. Кто-то применил hotfix вручную, кто-то изменил ConfigMap напрямую. Через месяц никто не знает, что реально запущено.
GitOps решает это через pull-модель: специальный оператор внутри кластера постоянно сравнивает желаемое состояние (Git) с фактическим (кластер) и автоматически синхронизирует их. Никакого прямого доступа к кластеру из CI не нужно — это повышает безопасность и воспроизводимость.
ArgoCD: мощный UI и богатая экосистема
ArgoCD — это декларативный GitOps-инструмент для Kubernetes с богатым веб-интерфейсом. Он показывает граф ресурсов приложения в реальном времени: какие поды запущены, какие деплойменты синхронизированы, где есть расхождения. Это делает его особенно удобным для команд, которые только начинают с GitOps.
- ·Визуальный UI с графом ресурсов
- ·Multi-tenancy из коробки
- ·RBAC на уровне приложений
- ·Поддержка Helm, Kustomize, Jsonnet
- ·ApplicationSet для fleet management
- ·Богатый REST API и CLI
- ·Требует больше ресурсов (~500MB RAM)
- ·Сложнее настроить без UI
- ·Нет встроенной работы с секретами
- ·Меньше гибкости в автоматизации
# ArgoCD Application manifest
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: infoscale-api
namespace: argocd
spec:
source:
repoURL: https://github.com/infoscale/k8s-manifests
targetRevision: HEAD
path: apps/api
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
Flux: Kubernetes-native и максимальная автоматизация
Flux v2 — это набор Kubernetes-контроллеров (GitRepository, Kustomization, HelmRelease), которые работают как обычные CRD. Нет отдельного сервера — только операторы в кластере. Это делает Flux более «нативным» для Kubernetes и проще в автоматизации через GitOps-подход к самому Flux.
- ·Минимальный footprint (~150MB RAM)
- ·Встроенная интеграция с SOPS/Sealed Secrets
- ·Image automation (автообновление тегов)
- ·Bootstrapping через CLI (flux bootstrap)
- ·Идеален для multi-cluster fleet
- ·Нативная интеграция с Helm OCI
- ·Нет встроенного UI (нужен Weave GitOps)
- ·Сложнее для новичков без UI
- ·Меньше возможностей multi-tenancy
- ·Отладка через kubectl, не через браузер
# Flux HelmRelease manifest
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: infoscale-api
namespace: production
spec:
interval: 5m
chart:
spec:
chart: ./charts/api
sourceRef:
kind: GitRepository
name: infoscale-k8s
values:
image.tag: "1.4.2"
Сравнение ArgoCD и Flux
| Параметр | ArgoCD | Flux v2 |
|---|---|---|
| Веб-интерфейс | ✅ Встроенный, богатый | ❌ Нет (нужен Weave GitOps) |
| Потребление ресурсов | ~500MB RAM | ~150MB RAM |
| Управление секретами | ❌ Внешние решения | ✅ SOPS, Sealed Secrets |
| Image automation | ⚠️ Через ArgoCD Image Updater | ✅ Встроено |
| Multi-tenancy | ✅ Отличная | ⚠️ Ограниченная |
| Kubernetes-native | ⚠️ Частично | ✅ Полностью CRD |
| Порог входа | Низкий (есть UI) | Средний (только CLI) |
| CNCF статус | Graduated | Graduated |
| Лицензия | Apache 2.0 | Apache 2.0 |
Когда что выбирать
ArgoCD
- Команда только начинает с GitOps
- Нужна визуализация состояния кластера
- Много команд в одном кластере (multi-tenancy)
- Требуется детальный RBAC на приложения
- Важна интеграция с внешними CD-системами
Flux v2
- Нужна максимальная автоматизация обновлений
- Важна безопасность секретов (SOPS)
- Управление fleet из 10+ кластеров
- Команда комфортна с kubectl и CLI
- Нужен минимальный overhead в кластере
Что мы используем в InfoScale
Мы используем оба инструмента — в зависимости от контекста проекта. Для клиентов, которые только внедряют GitOps и хотят видеть, что происходит в кластере, мы ставим ArgoCD. Визуальный граф ресурсов снижает порог входа и ускоряет онбординг команды.
Для зрелых команд с несколькими кластерами и требованиями к безопасности секретов мы выбираем Flux. Особенно ценна встроенная поддержка SOPS: секреты шифруются прямо в Git, никаких внешних vault-систем не нужно для базовых сценариев.
Реальный кейс: финтех-стартап, 3 кластера
Клиент пришёл с ArgoCD на одном кластере. При расширении на staging и production в двух регионах мы перешли на Flux с ApplicationSets-подобной структурой через Kustomize overlays. Время синхронизации изменений сократилось с 3 минут до 45 секунд, а управление секретами через SOPS убрало необходимость в отдельном Vault-кластере.
Типичные ошибки при внедрении GitOps
⚠️ Хранить секреты в Git в открытом виде
Самая частая ошибка новичков. Используйте SOPS с age-ключами (Flux) или External Secrets Operator (ArgoCD + Vault/AWS SSM).
⚠️ Смешивать application code и infrastructure manifests в одном репо
Разделяйте app-repo (код) и config-repo (манифесты). Это позволяет независимо версионировать деплои и упрощает аудит изменений.
⚠️ Отключать selfHeal в production
selfHeal — это суть GitOps. Без него ручные изменения в кластере не откатываются, и состояние расходится с Git. Включайте всегда, кроме случаев активной отладки.
⚠️ Не настраивать notifications
И ArgoCD, и Flux поддерживают уведомления в Slack/Telegram о статусе синхронизации. Без этого вы узнаёте о проблемах только когда что-то упало.
Итог
ArgoCD и Flux — оба отличных инструмента, оба CNCF Graduated. ArgoCD выигрывает по UX и multi-tenancy, Flux — по автоматизации, безопасности секретов и минимальному footprint. Для большинства новых проектов мы рекомендуем начать с ArgoCD, а при росте fleet или требованиях к автоматизации — рассмотреть Flux или гибридный подход.
Нужна помощь с GitOps?
Настроим ArgoCD или Flux под ваш кластер, обучим команду и передадим runbook.
Написать нам