오늘의 기술 토픽
GitOps
이번 브리프는 실제 밋업 발표 대신 GitOps라는 주제를 중심으로 정리한 내용이다. GitOps는 Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 삼아 인프라와 애플리케이션 배포를 관리하는 방법론이다. Argo CD, Flux 같은 도구가 Git의 상태를 Kubernetes 클러스터에 지속적으로 동기화하며, 이를 중심으로 관련 생태계 도구들이 함께 성장하고 있다. 아래 내용은 밋업 Q&A가 아니라 학습을 시작하는 독자를 위한 정리다.
🔑 핵심 요점
- GitOps는 Git 저장소의 선언적 설정을 클러스터 상태와 지속적으로 동기화하는 운영 방식이다.
- Argo CD와 Flux가 대표적인 GitOps 컨트롤러이며 둘 다 CNCF 생태계 프로젝트다.
- 배포 이력이 Git 커밋으로 남기 때문에 롤백과 감사(audit)가 쉬워진다.
- Kustomize나 Helm 같은 매니페스트 관리 도구와 함께 쓰이는 경우가 많다.
- 정책 기반 검증 도구(Kyverno 등)를 결합하면 배포 전후 안전장치를 추가할 수 있다.
- GitOps는 CI(빌드/테스트)와 CD(배포)를 분리해 배포 권한을 클러스터 내부 컨트롤러로 좁히는 방향을 지향한다.
🛠 핵심 기술 쉽게 이해하기
GitOps
Git 저장소에 인프라와 애플리케이션의 원하는 상태(desired state)를 선언적으로 기록하고, 자동화된 컨트롤러가 이를 실제 클러스터 상태와 지속적으로 비교·동기화하는 운영 방법론이다. ‘코드로서의 인프라(IaC)‘를 한 단계 더 발전시켜 Git을 배포의 유일한 기준점으로 삼는다.
왜 필요한가 — 수동 kubectl apply나 CI 스크립트에서 발생하는 배포 불일치, 권한 관리 복잡성, 변경 이력 추적 어려움을 해결하기 위해 쓰인다.
발표에서는 — 이번 브리프의 핵심 주제로, 이어지는 관련 기술들이 모두 GitOps 워크플로우를 구성하는 요소로 소개된다.
Argo CD
Kubernetes를 위한 선언적 GitOps 지속 배포 도구로, Git 저장소의 매니페스트를 클러스터에 자동 반영하고 웹 UI로 동기화 상태를 시각화해준다.
왜 필요한가 — Git 변경사항을 안전하고 자동으로 클러스터에 반영하며, 드리프트(drift)가 발생하면 이를 감지하고 알려준다.
발표에서는 — GitOps를 실제로 구현하는 대표 컨트롤러로 언급되는 도구다.
Flux
Argo CD와 유사한 GitOps 툴킷으로, CNCF 프로젝트이며 소스 컨트롤러, 헬름 컨트롤러 등 모듈화된 컴포넌트로 구성되어 있다.
왜 필요한가 — GitOps 자동화를 가볍고 확장 가능한 방식으로 구현하려는 팀에 적합하다.
발표에서는 — Argo CD와 함께 GitOps 생태계의 양대 도구로 언급된다.
Kustomize
Kubernetes 매니페스트를 base와 overlay 구조로 관리해 환경별(dev/staging/prod) 설정 차이를 템플릿 없이 선언적으로 표현하는 도구다.
왜 필요한가 — GitOps 저장소 안에서 환경별 배포 설정을 중복 없이 관리하기 위해 필요하다.
발표에서는 — GitOps 저장소 구조를 구성할 때 Helm과 함께 자주 언급되는 보조 도구로 소개된다.
🧭 추구 방향과 흐름
- 선언적 배포와 단일 진실 공급원 — GitOps는 클러스터의 실제 상태를 사람이 직접 조작하지 않고 Git 커밋을 통해서만 변경하도록 유도한다. 이는 배포 이력 추적성과 재현성을 높이는 방향으로, Argo CD·Flux 같은 컨트롤러가 이 원칙을 자동화 도구로 구현하고 있다.
- 배포 권한의 클러스터 내부화(Pull 기반 배포) — CI 파이프라인이 클러스터에 직접 접근하는 대신, 클러스터 내부의 컨트롤러가 Git을 주기적으로 pull하여 동기화하는 방식으로 전환되고 있다. 이는 외부 시스템에 클러스터 자격증명을 노출하지 않아도 되는 보안상 이점을 지향한다.
- 정책 및 검증 도구와의 결합 — Kyverno 같은 정책 엔진을 GitOps 파이프라인에 결합해 배포 전후 규칙 위반을 자동 차단하는 흐름이 커지고 있다. 이는 GitOps를 단순 배포 자동화를 넘어 거버넌스 체계로 확장하려는 방향이다.
🚀 바로 활용하기
- 로컬 Kubernetes 클러스터(kind, minikube 등)에 Argo CD를 설치하고 공식 Getting Started 가이드를 따라 샘플 앱을 배포해본다.
- GitOps 저장소 구조를 base/overlay로 나눠보며 Kustomize 공식 문서의 튜토리얼을 실습한다.
- CNCF GitOps 관련 자료를 읽고 Argo CD와 Flux의 차이를 비교해본다.
- 간단한 정책(예: 이미지 태그 latest 금지)을 Kyverno로 작성해 GitOps 파이프라인에 붙여본다.
🔗 참고 자료
- Argo CD Documentation — Argo CD 설치와 GitOps 동기화 개념을 다루는 공식 문서
- Flux Documentation — Flux 툴킷의 구성 요소와 GitOps 자동화 방식을 설명하는 공식 문서
- Kustomize — base/overlay 기반 매니페스트 관리 방법을 다루는 공식 사이트
- Kyverno — GitOps 파이프라인에 결합 가능한 Kubernetes 정책 엔진 공식 문서
- CNCF — GitOps 관련 프로젝트들이 속한 클라우드 네이티브 생태계 재단