С каким интервалом ArgoCD по умолчанию проверяет и применяет изменения из Git-репозитория?

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

Ответ

По умолчанию ArgoCD выполняет периодическую реконсиляцию (reconciliation) каждые 3 минуты (180 секунд). Это означает, что он опрашивает целевой Git-репозиторий и сравнивает желаемое состояние (описанное в манифестах) с фактическим состоянием в кластере. При обнаружении дрейфа (drift) ArgoCD автоматически синхронизирует (применяет) изменения.

Где настраивается интервал: Интервал задаётся в ConfigMap argocd-cm в параметре timeout.reconciliation.

Пример конфигурации для изменения интервала на 1 минуту:

# argocd-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
data:
  # Устанавливаем интервал реконсиляции в 60 секунд
  timeout.reconciliation: 60s

Как применить изменение:

# Применить конфигурацию
kubectl apply -f argocd-cm.yaml -n argocd

# Перезапустить репозиторный сервер для применения новой конфигурации
kubectl rollout restart deployment argocd-repo-server -n argocd

Практические соображения:

  • Уменьшение интервала (например, до 30-60s) ускоряет реакцию на коммиты, но увеличивает нагрузку на API Kubernetes и Git-сервер.
  • Webhook-синхронизация: Для мгновенного деплоя без опроса можно настроить webhook в Git-провайдере (GitHub, GitLab, Bitbucket), который будет триггерить синхронизацию в ArgoCD сразу после пуша в репозиторий. Это предпочтительный способ для продакшена.