— Kubernetes 운영 자동화의 완성
“Helm은 선언을, ArgoCD는 실행을 책임진다.”
— GitOps 실전 전략
📌 1. Helm과 ArgoCD, 왜 함께 써야 하나?
✅ Helm이란?
- Kubernetes 리소스를 템플릿(YAML)으로 작성하고, 파라미터화하여 배포/관리할 수 있게 해주는 패키지 매니저
helm install,helm upgrade,helm rollback등의 명령 지원
✅ ArgoCD란?
- GitOps 방식으로 Kubernetes에 선언된 리소스를 자동 배포/동기화/복구하는 컨트롤러
- Git 저장소를 감시하고, 실제 클러스터 상태와 비교하여 유지
💡 둘을 연동하면?
| Helm | ArgoCD |
|---|---|
| 복잡한 설정을 변수화 및 모듈화 | Git 저장소를 기준으로 배포 자동화 |
| 애플리케이션 단위 관리 | 실시간 감시와 자동 복구 |
| 배포 이력과 구성 분리 가능 | 시각화된 관리 대시보드 제공 |
🧱 2. 아키텍처 개요
[Git Repository (Helm Charts)] ───────┐
▼
[ArgoCD Controller]
▼
[Kubernetes Cluster]
- Git에는 Helm Chart(템플릿) 정의
- ArgoCD가 해당 Git 저장소를 감시하며 배포 수행
⚙️ 3. 실전 구축 단계
1️⃣ Helm Chart 구조 준비
helm create my-service
my-service/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── ingress.yaml
values.yaml에 환경별 변수 정리- Git 저장소에 이 Chart를 커밋
2️⃣ ArgoCD 설치 (Kubernetes 클러스터에)
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
- 기본 설치 후 대시보드 접속 가능
- 기본 사용자:
admin/ 비밀번호: 초기 pod 로그 확인
kubectl get pods -n argocd
kubectl port-forward svc/argocd-server -n argocd 8080:443
3️⃣ ArgoCD App 생성 – Helm 연동
방법 A. CLI (argocd 명령어 사용)
argocd app create my-service \
--repo https://github.com/myorg/mycharts.git \
--path my-service \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--helm-set image.tag=1.0.2 \
--sync-policy automated
방법 B. YAML로 정의 (선호되는 방식)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-service
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/mycharts.git
targetRevision: main
path: my-service
helm:
valueFiles:
- values.yaml
parameters:
- name: image.tag
value: "1.0.2"
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
kubectl apply -f app-my-service.yaml
4️⃣ 결과 확인 (대시보드)
- 접속 후 Application 목록에서 배포 상태, Diff, Sync 상태 확인
- 자동 동기화(
auto sync) 설정 시 Git 변경 → 자동 배포
🔧 4. 운영 전략 팁
| 항목 | 전략 |
|---|---|
| 환경 분리 | dev, staging, prod 디렉토리 또는 브랜치로 구분 |
| 버전 롤백 | ArgoCD UI에서 이전 Chart 버전으로 쉽게 Rollback |
| CI 연동 | GitHub Actions → Helm Chart 업데이트 + Git Push |
| 비밀 관리 | Sealed Secrets, External Secrets 연동 |
| 정책 적용 | OPA Gatekeeper로 리소스 정책 사전 검증 가능 |
🧪 5. GitOps 워크플로우 예시
개발자 → Git에 Helm Chart 변경 (PR)
↓
CI: Lint + 테스트
↓
PR 승인 및 Merge
↓
Git → ArgoCD 자동 Sync
↓
Kubernetes 클러스터 반영
Git 저장소가 **단일 진실 소스(Single Source of Truth)**로 작동
운영 이력은 모두 Git에서 추적 가능
✅ 마무리 요약
| 핵심 요소 | 요약 |
|---|---|
| Helm | 템플릿화된 Kubernetes 리소스 관리 |
| ArgoCD | Git 기반 자동 배포 및 상태 동기화 |
| 연동 효과 | 자동화 + 가시성 + Rollback + 정책 통제 |
| 베스트 프랙티스 | 환경별 디렉토리 구조, Sync 정책, PR 기반 릴리즈 |
Helm은 유연한 구성,
ArgoCD는 일관된 배포를 만들어 줍니다.
둘의 조합은 MSA 운영의 강력한 표준입니다.
