GitOps는 continuous deployment(특히 Kubernetes용)에 대한 접근법으로, **Git이 인프라와 애플리케이션의 desired state(원하는 상태)의 단일 진실 공급원(single source of truth)**이며, 자동화된 에이전트가 실제 상태를 Git과 일치하도록 지속적으로 **조정(reconcile)**합니다. 변경은 Git을 통해 이루어지고, 시스템이 이를 pull하여 적용합니다.
GitOps 모델
Git이 DESIRED STATE(선언적 config: Kubernetes manifest, Helm chart 등)를 보유:
→ 클러스터 내 AGENT가 실제 상태 vs Git(desired state)을 지속적으로 비교
→ 조정: 현실을 Git과 일치시키기 위해 변경을 자동으로 적용
→ deploy/변경하려면: Git에 commit → 에이전트가 감지하고 적용 (PULL 기반)
→ Git = 단일 진실 공급원; 시스템이 거기로 지속적으로 수렴.
Push vs pull deploy
전통적 CI/CD (push) → pipeline이 변경을 클러스터로 PUSH (CI가 클러스터
자격 증명을 가지고 kubectl apply 실행)
GITOPS (pull) → 클러스터 내부의 에이전트가 Git에서 PULL하여 변경을 적용:
✓ 클러스터 자격 증명이 클러스터 안에 머무름 (더 안전 — CI가 필요 없음)
✓ 지속적 조정 (drift가 자동 교정됨)
→ 도구: ArgoCD, Flux (Kubernetes GitOps operator).
