⸻
왜 GitOps인가: 실리콘밸리식 운영의 기본 원리
• 싱글 소스 오브 트루스(Single Source of Truth): 모든 인프라·애플리케이션 상태를 Git으로 일원화
• 풀 기반 배포 모델(Pull-based Deployment): ArgoCD가 Git 변경 사항을 자동 감지하여 클러스터에 반영
• 자동 복구(Self-Healing): 클러스터 상태가 Git 정의와 다르면 자동 롤백 또는 재동기화
• 감사 추적 및 협업 강화: PR 기반 인프라 변경, Git 히스토리로 모든 배포 변경 이력 추적
GitOps는 단순한 배포 자동화를 넘어서, 실리콘밸리·심천 기술 기업들이 실시간 롤백·셀프힐링·다중 환경 제어를 가능하게 만든 근간입니다.
⸻
핵심 구성 요소
구성 요소 도구 설명
배포 컨트롤러 ArgoCD Git과 클러스터 상태 동기화, UI 제공
구성 템플릿 Kustomize 환경별 YAML 분리, 패치 구조화
시크릿 관리 Mozilla SOPS / SealedSecrets Git에 안전하게 시크릿 저장
배포 트리거 GitHub Actions / GitLab CI PR 병합 시 ArgoCD 자동 동기화
⸻
폴더 구조 예시
infra/
├── base/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
├── overlays/
│ ├── dev/
│ │ └── kustomization.yaml
│ ├── staging/
│ └── prod/
└── secrets/
├── dev.enc.yaml
└── sops.yaml
• base/: 공통 리소스 정의
• overlays/: 환경별 차이점 관리
• secrets/: 암호화된 시크릿 파일 (예: SOPS, SealedSecrets)
⸻
ArgoCD 애플리케이션 정의 예시
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: app-prod
spec:
project: default
source:
repoURL: https://github.com/myorg/infra
targetRevision: HEAD
path: overlays/prod
kustomize:
images:
- myapp=ghcr.io/myorg/myapp:v1.2.3
destination:
server: https://kubernetes.default.svc
namespace: prod
syncPolicy:
automated:
prune: true
selfHeal: true
⸻
시크릿 자동화: SOPS 사용 흐름
1. GPG 키 or AWS KMS로 SOPS 설정
2. sops -e dev.yaml > dev.enc.yaml 로 암호화
3. Git에 커밋 및 Kustomize로 삽입
4. ArgoCD는 컨테이너 내부에서 SOPS 복호화하여 시크릿 생성
Kustomize 플러그인으로 generatorOptions.disableNameSuffixHash: true 설정 시 자동 name 충돌 방지
⸻
GitHub Actions 배포 트리거 예시
on:
push:
branches:
- main
paths:
- 'overlays/**'
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Notify ArgoCD
run: |
curl -X POST https://argocd.example.com/api/webhook \
-H "Authorization: Bearer $ARGOCD_TOKEN"
또는 ArgoCD CLI를 사용한 직접 동기화 명령:
argocd app sync app-prod
⸻
고급 전략
1. 자동 Rollback: 실패한 syncStatus 감지 시 이전 Git commit으로 자동 복원
2. 멀티 클러스터 관리: 각 환경별 destination.server 분리
3. 인프라 코드 리뷰 정책 강화: PR 기반 인프라 승인 프로세스
4. Slack 연동: syncStatus 변경 알림 → 채널 전파
5. 멀티 리포지토리 통합: 앱 코드와 인프라 코드 분리 운영 시 ArgoCD ApplicationSet 사용
⸻
결론
GitOps는 단순히 ‘코드로 배포한다’가 아니라, 코드로 전체 운영을 지배하는 체계입니다.
ArgoCD·Kustomize·SOPS를 조합하면, 당신의 인프라는 안정성·가시성·보안성 모두를 확보한 상태로 배포됩니다.
이제 수동 배포·환경 편차·시크릿 관리 혼란에서 벗어나세요.
지금이 바로 GitOps의 세계로 들어갈 때입니다.
카테고리 없음