Ответ
Я хочу глубоко изучить Argo CD, потому что вижу в нём наиболее элегантное и мощное решение для реализации GitOps-практик в Kubernetes, что стало отраслевым стандартом для управления production-окружениями.
Конкретные технические причины, основанные на моём опыте с CI/CD:
-
Декларативность и единый источник истины: В текущих проектах мы используем Helm и kubectl в CI-скриптах, что создаёт разрыв между желаемым состоянием (манифесты в Git) и фактическим (что запущено в кластере). Argo CD постоянно сравнивает (
diff) живое состояние кластера с описанным в Git-репозитории и автоматически синхронизирует его. Это исключает дрейф конфигурации. -
Упрощение процесса деплоя и отката: Вместо сложных pipeline'ов, которые выполняют
kubectl apply, деплой становится операцией над Git (мерж PR в нужную ветку). Откат — это простойgit revertили переключение на предыдущий коммит в UI Argo CD. Я планирую настроить это для нашего основного сервиса, чтобы сократить время на развёртывание hotfix. -
Повышение безопасности и контроля: Argo CD позволяет настроить RBAC, ограничивая, кто и какие кластеры или namespaces может обновлять. Все изменения аудируемы через Git-историю. Это более безопасно, чем хранение kubeconfig в CI-переменных.
-
Поддержка сложных стратегий развёртывания: Меня интересует использование Argo Rollouts для реализации canary- или blue-green-деплоев прямо из коробки, с интеграцией в метрики Prometheus для автоматического принятия решений.
Пример Application CRD, который я бы использовал для деплоя внутреннего API:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: backend-api-production
namespace: argocd
spec:
project: default
source:
repoURL: 'git@github.com:my-org/infrastructure.git'
targetRevision: main
path: k8s/production/backend-api # Директория с Helm chart или kustomize
helm:
releaseName: backend-api
destination:
server: 'https://kubernetes.default.svc'
namespace: production
syncPolicy:
automated:
prune: true # Автоматически удалять ресурсы, удалённые из Git
selfHeal: true # Автоматически исправлять расхождения
syncOptions:
- CreateNamespace=true
Изучение Argo CD — это следующий логический шаг для построения отказоустойчивого, безопасного и полностью автоматизированного CI/CD-конвейера для Kubernetes.