GitOps with Argo CD / Flux

Тема дорожной карты · DevOps Engineer

GitOps рассматривает Git-репозиторий как единственный источник правды о желаемом состоянии инфраструктуры и приложений. Агент-сверщик — Argo CD или Flux — постоянно сравнивает фактическое состояние кластера с тем, что в Git, и подтягивает любой дрейф. Pull-модель деплоя означает, что продовые креды не покидают кластер, каждое изменение проходит ревью через PR, а откат — это git revert. Особенно хорошо работает с Kubernetes, где всё уже декларативный YAML.

Как это работает

GitOps with Argo CD / Flux — де-факто платформа оркестрации: шедулит контейнеры (Pods) на флот worker-нод, гарантирует объявленное количество реплик, маршрутизирует трафик через Services и Ingress, монтирует persistent-хранилище через PVC и непрерывно reconcile-ит desired state. Control plane (api-server, etcd, scheduler, controller-manager) принимает решения о шедулинге; kubelet на каждой ноде запускает контейнеры через containerd/CRI-O. DevOps-инженеры взаимодействуют через kubectl, Helm-чарты, GitOps-инструменты (Argo CD, Flux) и observability-стеки (Prometheus, Grafana, Loki).

Когда применять

Применяйте GitOps with Argo CD / Flux при наличии 10+ сервисов с нетривиальным масштабированием, частотой деплоев или HA-требованиями. Для 1–3 сервисов Docker Compose на одной VM проще, дешевле и надёжнее. Managed Kubernetes (EKS, GKE, Yandex MKS) — дефолт для новых кластеров; self-managed Kubernetes на bare metal оправдан только при cost-оптимизации на большом масштабе или требованиях data-localisation. Сопровождайте Kubernetes GitOps'ом с первого дня; никогда не позволяйте людям делать kubectl apply против prod напрямую.

Типичные ошибки

Ловушки Kubernetes: over-engineering (запуск k8s ради 2 stateless-сервисов, которые отлично работают на VM); недо-ресурсенный control plane на self-managed кластерах; нет resource requests/limits (один runaway Pod выселяет всё остальное); игнорирование NetworkPolicies (всё общается со всем по умолчанию); ручные kubectl edit против prod, которые никто не фиксирует обратно в Git; stateful-нагрузки на Kubernetes без понимания trade-offs (БД требуют тщательной настройки PVC, backup и node affinity).

Связанные понятия

Полезные ресурсы