Какой у вас опыт работы с Argo CD?

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

Ответ

Мой опыт с Argo CD включает внедрение GitOps-практик для управления развертываниями в Kubernetes-кластерах. Я настраивал его как инструмент непрерывной доставки, где желаемое состояние инфраструктуры и приложений описывается в Git-репозитории.

Ключевые задачи, которые я решал:

  • Установка и настройка: Развертывание Argo CD в кластере через Helm, настройка RBAC, интеграция с SSO (например, Dex + GitHub OAuth).
  • Declarative Application Management: Создание Application и AppProject манифестов, управление несколькими окружениями через паттерн App of Apps.
  • Синхронизация и здоровье: Настройка автоматического sync с selfHeal и prune, мониторинг состояния развертываний через UI и CLI (argocd app wait).
  • Интеграция в CI/CD: Настройка webhooks для автоматического обновления при пуше в Git, использование плагинов (например, для рендеринга Helm с custom values).

Пример манифеста Application для Helm-чарта:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-microservice-prod
  namespace: argocd
spec:
  project: production
  source:
    repoURL: 'https://git.company.com/helm-charts.git'
    targetRevision: main
    path: charts/my-service
    helm:
      releaseName: my-service
      valueFiles:
        - values/production.yaml
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: my-service-prod
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

С какими сложностями сталкивался: Отладка расхождений (diff) при использовании Helm hooks, настройка корректного порядка синхронизации для зависимостей между приложениями, оптимизация производительности при большом количестве приложений.