ArgoCD — один из самых популярных инструментов для GitOps в Kubernetes. Его задача проста: состояние кластера должно полностью соответствовать тому, что описано в Git. Это снижает риск “ручных” изменений, упрощает откаты и делает деплой прозрачным.
Что такое GitOps на практике
- Git — единственный источник истины
- Все манифесты Kubernetes хранятся в репозитории
- ArgoCD автоматически сравнивает Git и кластер
- При расхождении может синхронизировать изменения вручную или автоматически
Зачем нужен ArgoCD
- ✅ Контроль версий инфраструктуры
- ✅ Понятная история изменений
- ✅ Быстрый rollback к предыдущему коммиту
- ✅ Удобная работа с Helm, Kustomize и plain YAML
- ✅ Визуализация состояния приложений в UI
Базовая схема настройки ArgoCD
Установите ArgoCD в кластер:
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlОткройте доступ к UI, например через port-forward:
kubectl port-forward svc/argocd-server -n argocd 8080:443Получите пароль администратора:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dПодключите Git-репозиторий с манифестами и создайте Application.
Пример Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: demo-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/example/repo.git
targetRevision: main
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: demo
syncPolicy:
automated:
prune: true
selfHeal: trueЧто важно в этом манифесте
repoURL— адрес Git-репозиторияpath— папка с Kubernetes-манифестамиtargetRevision— ветка, тег или commitprune: true— удаляет ресурсы, которых больше нет в GitselfHeal: true— возвращает кластер к состоянию из репозитория 🔄
Практические советы
- Храните отдельно приложение и инфраструктурные манифесты
- Используйте Helm/Kustomize для разных окружений: dev, stage, prod
- Ограничивайте доступ через RBAC
- Не храните секреты в открытом виде — подключайте Sealed Secrets, External Secrets или Vault 🔐
- Включайте auto-sync только там, где процесс релизов контролируем
Частые ошибки
- Один репозиторий без структуры — сложно масштабировать
- Отсутствие
readiness/liveness probes— ArgoCD покажет sync, но приложение может быть недоступно - Ручные изменения в кластере — они будут перезаписаны
- Непродуманная стратегия secrets — одна из главных причин проблем в проде ⚠️
Итог
ArgoCD делает Kubernetes-деплой воспроизводимым, управляемым и безопаснее с точки зрения процессов. Если команда хочет меньше “магии в кластере” и больше прозрачности, GitOps с ArgoCD — один из лучших стартов в эту сторону 📦
Присмотритесь к подборке каналов про IT — там много полезного по Kubernetes, DevOps, GitOps и production-практикам.