선언형(Declarative) 관리
- 원하는 최종 상태(desired state)를 Git에 적어두고, 시스템이 그 상태에 동기화
Git을 단일 진실 공급원(Single Source of Truth)으로 사용
- Git을 운영 상태 기록과 통제의 중심으로 활용
자동 동기화(Reconciliation)
- 계속해서 원하는 상태를 유지
개발자 코드 변경
↓
CI 도구 빌드 / 테스트 / 이미지 Push
↓
Git 저장소에 배포 매니페스트 변경 반영
↓
GitOps 도구가 Git 변경 감지
↓
클러스터에 동기화
- GitOps Pull 기반 배포
Git에 선언형 설정 저장
- Kubernetes YAML 매니페스트
- Helm chart 또는 values 파일
- Kustomize overlay
- 환경별 설정
- 이미지 태그 버전
- 네임스페이스 구조
- 배포 전략 관련 설정
애플리케이션 저장소와 운영 저장소 분리
-
애플리케이션 저장소
- 소스코드
- Dockerfile
- 테스트 코드
- CI Workflow
-
운영 저장소 (GitOps 저장소)
- Kubernetes 매니페스트
- 환경별 배포 설정
- 이미지 태그
- 운영 구성 정보
기본 동작 흐름
개발자 코드 변경
↓
CI 실행
├─ Build
├─ Test
└─ Image Push
↓
GitOps 저장소의 이미지 태그 또는 매니페스트 갱신
↓
GitOps 도구가 변경 감지
↓
클러스터에 적용
↓
실제 상태와 Git 상태 동기화 유지
장점
-
변경 이력 추적 쉬움
- 모든 운영 변경이 Git commit으로 남기 쉬움
- 감사 추적성과 운영 투명성에서 중요
-
롤백이 쉬움
- Git의 버전관리로, 특정 커밋 상태로 되돌리는 방식 가능
-
운영 상태 가시성 좋아짐
- Git만 보면 원하는 상태를 알 수 있다
-
Drift 감지와 복구 가능성
- 수동 변경이 누적되면서 운영 환경이 망가지는 문제 X
-
보안상 유리한 구조
- GitOps는 Pull 기반으로 인바운드 접근을 줄이는 구조
한계
-
Git에 반영되지 않는 수동 변경 → 문제 발생
- 운영 원칙 준수 중요
-
모든 작업이 GitOps에 맞지는 않음
- 배포와 상태 관리에 강점
- 모든 운영 절차를 선언형으로 만들순 X
-
저장소 구조와 승인 절차 설계 중요
- 저장소 전략과 권한 정책 함께 설계 필요
GitOps 의 CI/CD
GitOps는 CI 대체 X → CD와 운영 반영 측면의 방식
- 배포 반영의 주체와 경로를 변경하는 방식
정리
-
Kubernetes 중심 환경
-
컨테이너 이미지 기반 배포 환경
-
여러 환경을 일관되게 운영해야 하는 경우
-
운영 감사 추적이 중요한 경우
-
수동 변경을 줄이고 싶은 경우 → GitOps O
-
선언형 관리 경험 부족
-
Kubernetes나 컨테이너 기반 X
-
운영 수동 변경이 잦은 문화
-
저장소와 승인 구조가 미정리 되었을 경우 → GitOps X
Application Source Repository
↓
CI Pipeline
├─ Build
├─ Test
└─ Image Push
↓
GitOps Repository
└─ Deployment Manifest / Image Tag / Config
↓
GitOps Controller
↓
Kubernetes Cluster
요약
GitOps → Git을 운영 상태의 기준점으로 삼는 운영 방식
핵심 개념 = 선언형 관리, Single Source of Truth, 자동 동기화
기존 Push 기반 배포 X → Pull 기반 상태 동기화 구조 사용
장점 : 변경 추적, 롤백, Drift 감지, 운영 가시성
수동 변경 통제, 저장소 설계, 승인 정책 중요
GitOps 는 CI 대체 X → 주로 CD와 운영 반영 방식 재구성