본문으로 바로가기
TaeyoungKim.dev

Argo CD OutOfSync 뜻: Git과 Kubernetes 실제 상태가 달라졌을 때

클라우드작성 약 3분 읽기TaeyoungKim
LinkedInX

Git에는 복제본 수가 2로 적혀 있는데 클러스터에서는 3개가 실행 중이다. 배포가 실패했다는 뜻일까, 누군가 급하게 수동 변경한 걸까? GitOps에서는 Git에 기록한 원하는 상태와 클러스터의 현재 상태를 비교한다. 두 상태가 다르면 Argo CD가 OutOfSync를 보여 줄 수 있다. 이 표시만 보고 곧바로 ‘동기화’ 버튼을 누르기 전에 차이가 생긴 이유를 확인해야 한다.

GitOps에서 비교하는 두 상태는 무엇인가?

도식은 Git의 선언과 클러스터의 실제 값을 같은 축에 놓는다. 두 값이 다르면 OutOfSync이고, 동기화는 Git을 기준으로 실제 상태를 맞추는 다음 단계다.

교육 자료의 Argo CD 실습은 Git 저장소의 Guestbook 애플리케이션을 등록하고 수동으로 동기화하는 흐름을 다룬다. 여기서는 실제 저장소를 수정하지 않는 가상 복제본 수로 비교한다.

yaml
# Git에 기록한 Deployment 일부(설명용)
spec:
  replicas: 2
위치복제본 수의미
Git 설정2다음에 맞추고 싶은 상태
클러스터 현재 값3지금 실제로 관찰되는 상태

이 둘이 다르다는 사실과 어느 쪽이 옳은 결정인지는 별개다. 긴급 대응으로 3개를 수동 설정했다면 이를 그대로 유지할지, Git을 3으로 바꿀지, 원래의 2로 되돌릴지 팀이 판단해야 한다. Argo CD는 차이를 보여 줄 수 있지만 제품 요구와 장애 상황을 대신 결정하지는 않는다.

Sync를 누르면 무엇이 바뀔까?

동기화는 Git의 원하는 구성과 클러스터의 실제 구성을 맞추는 작업이다. 위 예에서 단순히 Git의 2를 적용한다면 현재의 3이 2로 줄어들 수 있다. 사용자 요청을 처리 중인 인스턴스 수가 줄어도 되는지 확인하지 않고 버튼부터 누르면 긴급 대응을 되돌릴 수 있다. Argo CD가 Git과 현재 상태 차이를 기준으로 동기화한다는 설명도 이 경계를 명확히 한다.

수동 동기화에서는 담당자가 차이를 읽고 반영 시점을 고른다. 자동 동기화를 켜면 차이가 발견될 때 반영이 더 빠를 수 있지만, 의도적인 임시 변경도 다시 맞춰질 수 있다. 자동 동기화 여부와 정리(prune) 같은 별도 옵션을 섞어 생각하지 말고 현재 애플리케이션 정책을 확인한다. 모든 OutOfSync가 같은 이유로 생기지는 않으며, 컨트롤러가 정상적으로 바꾸는 필드도 있을 수 있다.

차이를 조사할 때 어떤 순서가 안전할까?

먼저 Git에서 현재 선택된 브랜치·리비전과 경로가 의도한 것인지 확인한다. 그다음 Argo CD가 보여 주는 차이가 어떤 Kubernetes 리소스의 어떤 필드인지 읽는다. 마지막으로 그 필드가 배포 작업, 자동 확장, 수동 장애 조치 중 무엇 때문에 달라졌는지 확인한다. 원인을 알면 Git을 변경할지, 클러스터를 되돌릴지, 예상된 차이로 관리할지 선택할 수 있다.

운영 환경에서는 동기화가 삭제·축소를 수반할 수 있으므로 변경 범위와 되돌림 경로를 먼저 검토한다. 화면이 초록색으로 바뀌는 것보다 실제 서비스가 기대한 상태인지가 중요하다. 교육 자료의 실습 흐름을 실제 운영 장애 해결 경험으로 포장하지 않고, 여기서는 판단 순서만 설명한다.

핵심 요약: OutOfSync는 차이 신호이지 자동 정답이 아니다

OutOfSync는 Git에 적은 상태와 클러스터 현재 상태가 다르다는 신호다. 동기화 전에 어떤 필드가 왜 달라졌는지, 적용하면 무엇이 줄거나 바뀌는지 확인한다. 그다음 Git을 수정할지, 현재 상태를 되돌릴지 결정하자.

작성자

TaeyoungKim

기초 개념을 구현과 검증, 실제 운영 판단까지 연결해 기록합니다.

#Kubernetes#GitOps#Argo CD#OutOfSync#Sync

함께 읽으면 좋은 글