동기화 전략

지원 버전: ArgoCD v2.9+ 마지막 업데이트: 2026년 2월 22일

목차

동기화 개요

동기화(Sync)는 Git 저장소의 원하는 상태(Desired State)를 Kubernetes 클러스터의 실제 상태(Live State)와 일치시키는 과정입니다.

spinner

동기화 상태

상태
설명

Synced

Git과 클러스터 상태 일치

OutOfSync

Git과 클러스터 상태 불일치

Unknown

상태 확인 불가

동기화 결과

결과
설명

Succeeded

동기화 성공

Failed

동기화 실패

Pruned

리소스 삭제됨

수동 vs 자동 동기화

수동 동기화

기본적으로 ArgoCD Application은 수동 동기화 모드입니다:

CLI로 수동 동기화:

자동 동기화

Git 변경 시 자동으로 동기화합니다:

비교

특성
수동 동기화
자동 동기화

배포 제어

명시적 승인 필요

자동 배포

사용 사례

프로덕션, 승인 필요 환경

개발, 스테이징

드리프트 처리

수동 복구

자동 복구 (selfHeal)

Git 롤백

수동

자동

자동 동기화 정책

prune

Git에서 삭제된 리소스를 클러스터에서도 삭제합니다:

동작 예시:

spinner

selfHeal

클러스터의 드리프트를 자동으로 수정합니다:

동작 예시:

spinner

allowEmpty

소스 디렉토리가 비어있어도 동기화를 허용합니다:

주의: allowEmpty: trueprune: true를 함께 사용하면 모든 리소스가 삭제될 수 있습니다.

전체 예시

동기화 옵션

syncOptions 목록

Validate

매니페스트의 유효성을 검사합니다:

CreateNamespace

대상 네임스페이스를 자동으로 생성합니다:

PrunePropagationPolicy

삭제 시 전파 정책을 설정합니다:

PruneLast

동기화의 마지막 단계에서 프루닝을 수행합니다:

ApplyOutOfSyncOnly

OutOfSync 상태인 리소스만 적용합니다 (성능 최적화):

ServerSideApply

Kubernetes Server-Side Apply를 사용합니다:

장점:

  • 필드 소유권 추적

  • 대규모 매니페스트 지원

  • 충돌 감지 개선

Replace

리소스를 패치 대신 대체합니다:

주의: 리소스가 완전히 대체되므로 주의해서 사용하세요.

FailOnSharedResource

다른 Application이 관리하는 리소스 발견 시 실패합니다:

RespectIgnoreDifferences

ignoreDifferences 설정을 동기화 시에도 존중합니다:

동기화 웨이브와 단계

동기화 웨이브

동기화 웨이브(Sync Wave)는 리소스의 적용 순서를 제어합니다:

spinner

웨이브 어노테이션

웨이브 동작

  1. 낮은 웨이브 번호부터 순차적으로 적용

  2. 동일 웨이브 내 리소스는 병렬 적용

  3. 각 웨이브는 이전 웨이브가 완료된 후 시작

  4. 웨이브 내 리소스가 Healthy 상태가 되어야 다음 웨이브 진행

실제 예시: 전체 스택 배포

리소스 훅

리소스 훅은 Application 심층 분석에서 자세히 다룹니다.

훅과 웨이브 조합

동기화 윈도우

동기화 윈도우는 특정 시간대에만 동기화를 허용하거나 차단합니다.

AppProject에서 설정

동기화 윈도우 동작

spinner

윈도우 우선순위

  1. deny 윈도우가 allow보다 우선

  2. 더 구체적인 매칭이 우선 (애플리케이션 이름 > 네임스페이스 > 클러스터)

  3. 활성 윈도우가 없으면 동기화 허용

CLI로 윈도우 상태 확인

디핑 커스터마이징

ignoreDifferences

특정 필드의 차이를 무시합니다:

managedFields 무시

전역 무시 설정

재시도 정책

동기화 실패 시 자동 재시도를 구성합니다:

재시도 동작

spinner

선택적 동기화

특정 리소스만 동기화

선택적 동기화 옵션

리소스 제외

다음 단계

  1. ApplicationSets: 대규모 배포를 위한 ApplicationSet 생성기를 학습하세요.

  2. 트래픽 관리: Argo Rollouts를 통한 블루/그린, 카나리 배포를 구현하세요.

  3. 프로젝트와 RBAC: 동기화 윈도우와 RBAC을 결합하여 배포를 제어하세요.

참고 자료

퀴즈

이 장에서 배운 내용을 테스트하려면 동기화 전략 퀴즈를 풀어보세요.

마지막 업데이트