콘텐츠로 이동

헬스·동기화 상태

개요

ArgoCD는 배포만 하고 끝내지 않아요. 배포된 애플리케이션의 상태를 계속 보고해요. 여기에는 두 가지 축이 있어요. 하나는 레포와 클러스터가 얼마나 일치하는지(동기화 상태), 다른 하나는 배포된 리소스가 실제로 잘 동작하는지(헬스 상태)예요. 이 두 상태를 읽으면 "지금 배포가 잘 되고 있는지"가 한눈에 보여요.

상위 문서: ArgoCD · GitOps · 애플리케이션

핵심 개념

동기화 상태(Sync Status). 원하는 상태(레포)와 실제 상태(클러스터)의 일치 정도예요. 주로 세 가지가 있어요.

  • Synced — 두 상태가 일치해요.
  • OutOfSync — 차이가 있어요. 레포에 새 매니페스트가 머지됐거나, 누가 kubectl로 손댔을 때 나타나요. 싱크하면 Synced로 돌아와요.
  • Unknown — 아직 확인하지 못한 상태예요.

헬스 상태(Health Status). 리소스가 기술적으로 제대로 동작하는지예요. 대표 상태는 다음과 같아요.

  • Healthy — 정상 동작 중
  • Progressing — 롤아웃·스케일링 처럼 변화가 진행 중
  • Degraded — 뭔가 잘못되어 비정상(예: 파드가 크래시루프)
  • Missing — 예상 리소스가 없음

조합해서 읽기. 두 상태를 함께 봐야 전체가 보여요. 예를 들어 "Synced + Degraded"면 이미지는 레포와 같지만 실제로 고장이 났다는 의미이고, "OutOfSync + Healthy"면 새 버전이 레포에 들어왔지만 아직 동기화되지 않았음을 뜻해요.

상태 확인 방법. 웹 UI에서는 동기화·헬스 노드가 색상으로 보여요. 커맨드라인으로는 argocd app get <앱> 또는 kubectl get application -n argocd -o wide로 확인할 수 있어요. 세부 트리는 kubectl get app <앱> -o yaml.status에서 봐요.

트리(Tree) 기반 헬스. ArgoCD는 Deployment가 만드는 파드까지 따라가서, 최하위 워크로드가 잘 도는지까지 확인해요. 그래서 "Deployment만 Healthy인데 파드가 죽어 있다" 같은 상황도 정확히 잡아내요.

실제 적용(데이터스케쳐스)

우리는 ArgoCD 대시보드로 모든 서비스의 상태를 한눈에 봐요. 배포 직후에는 Progressing이었다가 Healthy로 넘어가는 걸 확인하고, 레포에 새 머지가 생기면 OutOfSync가 떴다가 자동 싱크로 Synced가 되는 흐름을 지켜봐요. 만약 Degraded가 뜨면 파드 로그와 디플로이먼트 상태를 들여다보는 게 다음 단계예요. 이 두 상태가 우리 운영 모니터링의 기준이 돼요.

더 알아보기