동기화 윈도우

동기화 윈도우 (Sync Windows) — 자동 싱크를 허용하거나 막는 시간대 설정하기

Argo CD의 동기화 윈도우는 특정 시간대에 자동 동기화를 막거나 허용해 주는 기능이에요. 배포가 서비스에 영향을 주면 안 되는 시간대(가령 영업 시간이거나 대규모 점검 중일 때)에 자동 싱크가 도는 걸 예방해서 운영 리스크를 줄여줘요. kind 값 하나로 allow(허용)와 deny(차단)를 정하고, cron 스케줄과 지속 시간, 대상 애플리케이션·네임스페이스·클러스터를 조합해서 윈도우를 정의해요.

출처: https://argo-cd.readthedocs.io/en/stable/user-guide/sync_windows/

본문

윈도우는 CLI로 간단하게 만들 수 있어요. 매일 22시부터 1시간 동안 모든 애플리케이션의 싱크를 허용하는 예시를 볼게요.

argocd proj windows add PROJECT \
    --kind allow \
    --schedule "0 22 * * *" \
    --duration 1h \
    --applications "*"

deny 윈도우가 걸려 있어도 이미 진행 중인 싱크는 계속 마무리되도록 허용(overrun)할 수 있어요. 윈도우 때문에 싱크가 막혀 있을 때 수동으로는 싱크를 실행하고 싶은 상황이 있을 거예요. 그럴 땐 CLI, UI, 또는 AppProject 매니페스트에서 수동 싱크 허용을 켜면 돼요.

argocd proj windows enable-manual-sync PROJECT ID
argocd proj windows disable-manual-sync PROJECT ID

기존 윈도우의 sync overrun(진행 중 싱크 허용)도 같은 방식으로 켜고 끌 수 있어요.

argocd proj windows enable-sync-overrun PROJECT ID
argocd proj windows disable-sync-overrun PROJECT ID

지금 어떤 윈도우가 어떻게 설정되어 있는지는 CLI로 목록을 보거나 UI에서 확인할 수 있어요.

argocd proj windows list PROJECT

윈도우가 적용되는 네임스페이스를 바꾸고 싶다면 update 명령으로 대상 목록을 재지정해 주면 돼요.

argocd proj windows update PROJECT ID --namespaces default,kube-system,prod1

더 알아보기

  • Sync Phases and Waves — 리소스를 넣는 순서를 내 마음대로
  • Automated Sync Policy — Git과 클러스터 차이를 자동으로 맞추기
  • 선택적 동기화 — 필요한 리소스만 골라서 싱크하기