Почему хочешь изучить Argo CD?

«Почему хочешь изучить Argo CD?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я хочу глубоко изучить Argo CD, потому что вижу в нём наиболее элегантное и мощное решение для реализации GitOps-практик в Kubernetes, что стало отраслевым стандартом для управления production-окружениями.

Конкретные технические причины, основанные на моём опыте с CI/CD:

  1. Декларативность и единый источник истины: В текущих проектах мы используем Helm и kubectl в CI-скриптах, что создаёт разрыв между желаемым состоянием (манифесты в Git) и фактическим (что запущено в кластере). Argo CD постоянно сравнивает (diff) живое состояние кластера с описанным в Git-репозитории и автоматически синхронизирует его. Это исключает дрейф конфигурации.

  2. Упрощение процесса деплоя и отката: Вместо сложных pipeline'ов, которые выполняют kubectl apply, деплой становится операцией над Git (мерж PR в нужную ветку). Откат — это простой git revert или переключение на предыдущий коммит в UI Argo CD. Я планирую настроить это для нашего основного сервиса, чтобы сократить время на развёртывание hotfix.

  3. Повышение безопасности и контроля: Argo CD позволяет настроить RBAC, ограничивая, кто и какие кластеры или namespaces может обновлять. Все изменения аудируемы через Git-историю. Это более безопасно, чем хранение kubeconfig в CI-переменных.

  4. Поддержка сложных стратегий развёртывания: Меня интересует использование 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.