즉, GitOps는 단순히 Git 저장소를 사용하는 것이 아니라
Git 상태를 실제 시스템과 계속 맞추는 운영 메커니즘이 필요함.
GitOps 도구는 보통 다음 역할을 수행함.
즉, GitOps 도구는 Git과 Kubernetes 사이에서 상태 동기화 컨트롤러 역할을 한다.

Argo CD는 Kubernetes 환경에서 GitOps 방식 배포를 구현하기 위한 대표적인 오픈소스 도구다.
Argo CD는 Git 저장소를 애플리케이션의 원하는 상태가 정의된 기준점으로 보고, 클러스터의 실제 상태를 그 Git 상태에 맞추도록 동작한다.
즉, Argo CD는 단순히 배포 명령을 대신 실행하는 도구가 아니라,
Git 저장소를 기준으로 클러스터 상태를 지속적으로 관리하는 도구다.
Argo CD가 널리 쓰이는 이유는 다음과 같음.
즉, Argo CD는 GitOps 개념을 실제 운영에 적용할 수 있게 해주는 실용적 도구다.
전통적인 방식에서는 Jenkins나 GitHub Actions가 직접 Kubernetes에 배포할 수 있음.
예:
kubectl apply이 방식은 익숙하고 단순해 보일 수 있지만, 다음 문제가 생기기 쉬움.
즉, CI 도구 직접 배포는 "반영"에는 강하지만, 지속적 상태 관리에는 한계가 있을 수 있음.
Argo CD의 핵심은 "명령을 한 번 실행한다"가 아니라,
Git에 적힌 상태를 계속 유지하려 한다는 점이다.
즉, Argo CD는 다음 질문에 답하기 쉬움.
이 구조가 GitOps 운영의 핵심 가치다.
Argo CD의 기본 흐름은 다음처럼 이해할 수 있음.
Git 저장소에 매니페스트 존재
↓
Argo CD가 저장소 감시
↓
변경 감지
↓
원하는 상태 렌더링
↓
클러스터의 실제 상태와 비교
↓
차이가 있으면 Sync 수행
↓
클러스터 상태를 Git 기준으로 맞춤
이 구조에서 중요한 점은
Argo CD가 "변경 감지"와 "상태 비교"와 "동기화"를 모두 맡는다는 점이다.
Argo CD를 이해할 때 자주 등장하는 핵심 개념 몇 가지를 먼저 정리해야 함.
Argo CD에서 Application은 배포 및 동기화 관리의 기본 단위다.
"이 Git 저장소의 특정 경로에 있는 매니페스트를 이 클러스터의 특정 네임스페이스에 반영하라"는 정의라고 볼 수 있음.
즉, Application은 다음을 연결함.
Application은 Argo CD에서 가장 중요한 객체다.
Source는 원하는 상태가 어디에 정의되어 있는지를 의미함.
예:
즉, Argo CD는 Source를 통해 "무엇을 기준으로 삼을지"를 결정함.
Destination은 실제로 반영할 대상 위치다.
예:
즉, Source가 기준점이라면 Destination은 반영 대상이다.
Sync Policy는 Git 상태를 실제 클러스터에 어떤 방식으로 반영할지를 정하는 정책이다.
예:
즉, Argo CD는 단순 감시만 하는 것이 아니라
차이가 생겼을 때 어떤 행동을 할지 정책적으로 결정할 수 있음.
Argo CD는 상태를 매우 중요하게 다룸.
대표적으로 자주 보는 상태가 있음.
Sync Status는 Git에 정의된 원하는 상태와 클러스터 실제 상태가 일치하는지를 보여줌.
대표 상태:
SyncedOutOfSyncSyncedGit 기준 상태와 실제 클러스터 상태가 일치함.
OutOfSyncGit 기준 상태와 실제 상태가 다름.
이 상태는 GitOps 운영에서 매우 중요함.
왜냐하면 "배포를 했는가"보다 "현재 기준 상태와 같은가"가 더 중요하기 때문임.
Health Status는 애플리케이션 리소스가 정상적으로 동작하고 있는지를 보여줌.
대표 상태 예:
HealthyProgressingDegradedMissing즉, Sync와 Health는 다름.
이 구분은 매우 중요함.
예를 들어,
즉, 두 가지 정보를 확인해야 운영 상태를 제대로 이해할 수 있음.
Argo CD는 동기화 방식을 크게 두 가지로 볼 수 있음.
Git에 변경이 있어도 Argo CD가 자동으로 적용하지 않고, 운영자가 확인 후 Sync를 수행하는 방식이다.
즉, 수동 동기화는 GitOps이면서도 통제 중심 운영에 가깝다.
Git에 변경이 생기면 Argo CD가 이를 감지하고 자동으로 클러스터에 반영하는 방식이다.
즉, 자동 동기화는 강력하지만
Git 저장소에 대한 통제가 충분히 갖춰져 있어야 안전함.
Drift는 Git에 정의된 상태와 실제 클러스터 상태가 어긋나는 현상을 의미함.
예:
kubectl edit로 수정이런 변화가 Git에 반영되지 않으면 Drift가 생김.
Argo CD는 Git 상태와 실제 상태를 비교해서 OutOfSync를 표시할 수 있음.
정책에 따라 다음도 가능함.
즉, Argo CD는 단순 배포 도구가 아니라
운영 환경의 무단 또는 임시 변경을 감지하는 감시 장치 역할도 함.
Argo CD가 잘 동작하는 이유는 Kubernetes 자체가 선언형 모델이기 때문임.
Argo CD는 Git에 있는 YAML, Helm, Kustomize 결과를 원하는 상태로 해석함.
Argo CD가 반영하면 Kubernetes 내부 컨트롤러가 세부 상태를 맞춰감.
즉, Argo CD와 Kubernetes는 역할이 다름.
이 둘이 합쳐져 GitOps 운영 모델이 완성됨.
즉, Argo CD는 빌드 도구가 아님.
또한 테스트 도구도 아님.
Argo CD는 배포 상태 동기화 도구다.
Argo CD를 운영할 때는 저장소 구조가 매우 중요함.
즉, Git 저장소 안에서 환경 구분과 애플리케이션 구분이 명확해야 Argo CD 운영도 쉬워짐.
저장소 구조가 혼란스러우면 다음 문제가 생김.
즉, Argo CD는 강력하지만, 정리된 Git 구조 위에서 더 큰 힘을 발휘함.
운영 상태 기준이 명확해짐.
수동 변경이나 상태 어긋남을 발견하기 쉬움.
조직 성숙도에 따라 조절 가능함.
여러 앱을 중앙에서 상태 확인 가능함.
Git 변경 → 상태 동기화 구조를 실무에 적용하기 좋음.
자동 동기화를 쓰면 Git merge가 곧 운영 반영으로 이어질 수 있음.
직접 수정이 많아지면 Drift가 반복되고 운영 원칙이 흔들림.
둘 중 하나만 보고 판단하면 오해가 생길 수 있음.
환경과 앱 구분이 흐리면 운영이 복잡해짐.
접근 권한, UI 보안, 클러스터 연결, 장애 대응을 고려해야 함.
Application Source Repository
↓
CI Pipeline
├─ Build
├─ Test
└─ Image Push
↓
GitOps Repository
└─ Kubernetes Manifest / Helm / Kustomize
↓
Argo CD
├─ Git 감시
├─ 상태 비교
├─ Sync 수행
└─ Health 확인
↓
Kubernetes Cluster
이 구조에서 중요한 점은 다음임.