Ответ
По умолчанию 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 сразу после пуша в репозиторий. Это предпочтительный способ для продакшена.