Argo CD + Kustomize + Cluster Gateway 완전정복
⸻
🧭 문제 인식
대기업, 글로벌 SaaS, 금융사 등에서 단일 Kubernetes 클러스터로는 지역 장애, 트래픽 분산, 조직 분리 등 다양한 요구사항을 수용할 수 없습니다. 이에 따라 멀티 클러스터 구성이 대세가 되었고, 이와 함께 GitOps 기반의 일관된 배포 전략이 필요해졌습니다.
기존에는:
• kubectl로 클러스터마다 수동 배포
• 클러스터 ID/네트워크/네임스페이스가 달라 YAML 재사용 어려움
• 롤백·변경 추적이 불가능하거나 매우 복잡
이러한 문제는 Argo CD + Kustomize + GitOps + Cluster Gateway 기반 구조로 해결할 수 있습니다.
⸻
🔧 핵심 구성 요소
구성 요소 역할
Argo CD GitOps 배포 컨트롤러. Git repo → 클러스터로 동기화
Kustomize 환경별 클러스터/네임스페이스 오버레이 관리
Cluster Gateway (KubeFed, Argo CD plugin 등) 다중 클러스터 대상으로 배포 라우팅
Git Repository 선언적 상태(YAML) 및 환경 설정 보관소
⸻
🏗️ Git Repository 설계
gitops/
├── base/
│ ├── deployment.yaml
│ └── service.yaml
├── overlays/
│ ├── cluster-a/
│ │ └── kustomization.yaml # 이미지 버전, 레플리카수 override
│ ├── cluster-b/
│ │ └── kustomization.yaml # 다른 네임스페이스, 설정
→ 모든 클러스터에 공통으로 적용할 내용은 base/,
→ 클러스터별 오버레이만 overlays/에 정의
⸻
🧩 Argo CD ApplicationSet + Cluster Generator 예시
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: multi-cluster-apps
spec:
generators:
- clusters:
selector:
matchLabels:
environment: production
template:
metadata:
name: '{{name}}-app'
spec:
project: default
source:
repoURL: https://github.com/yourorg/gitops
targetRevision: HEAD
path: overlays/{{name}}
destination:
server: '{{server}}'
namespace: yourapp
syncPolicy:
automated:
prune: true
selfHeal: true
이 설정을 통해 모든 클러스터에 자동으로 앱 배포가 가능하며, 클러스터에 문제가 생기면 Git 상태를 기준으로 **자동 복구(Self-Healing)**까지 이뤄집니다.
⸻
🧪 보안과 감사 대응
• RBAC 통제는 Argo CD 프로젝트 단위로 분리 가능
• Git 커밋 로그와 PR 기반 변경 추적 (e.g. GitHub Audit)
• Dev와 Prod의 배포 승인 워크플로우는 Git PR로 통제 (e.g. Code Owners)
⸻
🌐 확장 예시
조직 규모 구현 방식
스타트업 단일 Argo CD 인스턴스 + 2~3개 클러스터
중견 기업 중앙 Argo CD + 각 클러스터에 read-only access
글로벌 SaaS Argo CD Edge 인스턴스 → 중앙에서 동기화 추적 + 퍼포먼스 분산
⸻
✅ 베스트 프랙티스
• Kustomize로 오버레이를 구성하고, 공통 YAML은 절대 중복하지 않기
• Argo CD Helm plugin과 Kustomize plugin을 병행하여 복잡도 낮추기
• PR → Git → Argo CD 자동 동기화 → Slack 알림 흐름 구성
• 클러스터 장애 시, 해당 클러스터만 failover하고 나머지엔 영향 최소화
• 배포 승인 → Git PR 머지 전 확인 (GitHub Actions + PR Label gating)
⸻
🔚 결론
GitOps는 이제 단순히 “코드를 Git에 넣고 배포”하는 개념을 넘어
멀티 클러스터 거버넌스와 무중단 글로벌 배포의 핵심 전략으로 자리잡고 있습니다.
Argo CD, Kustomize, Cluster Generator를 정교하게 엮는다면,
전 세계에 분산된 수백 개 클러스터도 일관된 방식으로 운영할 수 있습니다.
이제는 사람이 아니라 Git이 전 세계 인프라를 통제하는 시대입니다.
'IT & Tech 정보' 카테고리의 다른 글
SLA 기반 자동 스케일링 아키텍처 완전 해부: KEDA + Prometheus + OpenSLO + Slack 연동 (0) | 2025.05.28 |
---|---|
쿠버네티스 기반의 실시간 장애 전파 및 자동 복구 시스템 설계: (0) | 2025.05.28 |
SLA 기반 리소스 자동 스케일링 시스템: KEDA + Prometheus + Custom Autoscaler의 완전한 설계 (0) | 2025.05.28 |
무중단 데이터 마이그레이션 자동화: 온라인 스키마 변경 with gh-ost + Argo Workflows (0) | 2025.05.28 |
Helm + GitOps + SecretOps: 프로덕션 등급 Kubernetes 배포를 위한 완전체 구성 전략 (0) | 2025.05.28 |