1️⃣ Kubernetes에서 CI/CD를 최적화해야 하는 이유?
Kubernetes에서 애플리케이션을 배포할 때, 일반적인 CI/CD 파이프라인을 사용하면
복잡한 YAML 파일 관리, 실수로 인한 잘못된 배포, 운영 환경의 비일관성 등의 문제가 발생할 수 있습니다.
✅ GitOps를 사용하면 다음과 같은 이점이 있습니다.
✔ 배포 과정 자동화 → Git의 변경 사항이 Kubernetes 클러스터에 자동 반영
✔ 버전 관리 및 롤백 간편 → Git을 통해 모든 배포 히스토리 관리
✔ 배포 환경 일관성 유지 → 운영 환경과 Git 상태를 동기화
GitOps는 Kubernetes CI/CD를 최적화하는 가장 효과적인 방식입니다.
2️⃣ GitOps란?
📌 GitOps는 Git을 Kubernetes 배포의 단일 신뢰 원본(Single Source of Truth)으로 활용하는 운영 방식입니다.
📌 Git의 변경 사항이 자동으로 Kubernetes 클러스터에 적용되며, 배포 환경이 항상 일관성을 유지합니다.
📌 GitOps 기반 CI/CD 파이프라인 예시
개발자가 코드 변경 → Git Push
⬇
CI/CD 시스템 (GitHub Actions, GitLab CI/CD)
⬇
컨테이너 빌드 & Docker Hub 업로드
⬇
GitOps 도구 (ArgoCD, Flux) → Kubernetes 자동 배포
⬇
Kubernetes 클러스터에서 새로운 버전 실행
✅ GitOps를 사용하면 Git에서 모든 배포 상태를 관리하고 Kubernetes와 자동 동기화 가능!
3️⃣ GitOps를 구현하는 대표적인 도구
도구설명
ArgoCD | Kubernetes 네이티브 GitOps 도구 |
Flux | CNCF에서 지원하는 GitOps 도구 |
Jenkins X | CI/CD 기능을 포함한 GitOps 도구 |
✅ 이제 ArgoCD를 활용하여 GitOps 기반 Kubernetes 배포를 구현해보겠습니다. 🚀
4️⃣ ArgoCD를 사용한 GitOps 환경 구축하기
📌 ArgoCD는 GitOps를 구현하기 위한 Kubernetes 네이티브 배포 도구입니다.
📌 Git에 저장된 Kubernetes 설정 파일을 자동으로 클러스터에 반영합니다.
✅ Step 1: ArgoCD 설치하기
📌 ArgoCD 네임스페이스 생성 및 설치
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
📌 ArgoCD 서버 확인
kubectl get pods -n argocd
✅ ArgoCD가 정상적으로 실행되는지 확인!
✅ Step 2: ArgoCD 로그인 및 초기 설정
📌 ArgoCD CLI 설치 (MacOS)
brew install argocd
📌 ArgoCD 서버 포트 포워딩
kubectl port-forward svc/argocd-server -n argocd 8080:443
📌 ArgoCD 초기 관리자 비밀번호 확인
kubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 --decode
✅ 이제 웹 UI (https://localhost:8080)에 접속하여 로그인 가능!
✅ Step 3: GitOps 애플리케이션 등록
ArgoCD를 사용하여 Git에 저장된 Kubernetes 애플리케이션을 자동으로 배포할 수 있습니다.
📌 ArgoCD CLI로 애플리케이션 생성
argocd app create myapp \
--repo https://github.com/myrepo/myapp.git \
--path k8s \
--dest-server https://kubernetes.default.svc \
--dest-namespace default
📌 배포 동기화
argocd app sync myapp
✅ Git에서 변경 사항이 발생하면 자동으로 Kubernetes에 적용됨!
✅ Step 4: Git 변경 사항 반영 및 자동 배포
이제 Git에 배포 파일을 변경하면 ArgoCD가 자동으로 Kubernetes에 적용합니다.
📌 GitOps 기반 배포 예제 (deployment.yaml 수정)
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myrepo/myapp:v2 # 새로운 버전
📌 Git에 변경 사항 Push
git add .
git commit -m "배포 버전 업데이트"
git push origin main
✅ Git에 변경 사항을 Push하면 자동으로 새로운 버전이 배포됨!
5️⃣ GitOps를 활용한 배포 전략
📌 GitOps는 Canary 배포, Blue-Green 배포 등의 전략과 함께 사용할 수 있습니다.
✅ Canary 배포 적용
📌 GitOps를 활용하여 Canary 배포를 자동화 가능
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-canary
spec:
replicas: 1 # Canary 버전은 10%만 배포
selector:
matchLabels:
app: myapp
version: v2
template:
metadata:
labels:
app: myapp
version: v2
spec:
containers:
- name: myapp
image: myrepo/myapp:v2
📌 트래픽을 조절하며 점진적 배포 가능!
6️⃣ GitOps 운영 자동화 (Webhook & Sync 설정)
ArgoCD는 Git 변경 사항을 자동으로 감지하여 배포할 수 있습니다.
📌 자동 동기화 설정
argocd app set myapp --sync-policy automated
📌 Webhook을 사용하여 GitHub 이벤트 기반 자동 배포
GitHub Webhook 설정
- 이벤트: Push
- 대상 URL: http://argocd-server.default.svc.cluster.local/api/webhook
✅ GitOps 운영을 완전 자동화 가능!
📌 결론: GitOps 기반 Kubernetes 배포 전략 요약
✔ ArgoCD를 활용하면 Git에서 Kubernetes 배포를 자동화 가능
✔ Git 변경 사항을 기반으로 무중단 배포 가능
✔ Canary, Blue-Green 배포 전략과 함께 활용 가능
✔ GitHub Webhook과 함께 사용하면 완전 자동화 가능
🔥 GitOps를 도입하면 Kubernetes CI/CD를 더욱 안전하고 효과적으로 운영 가능! 🚀
'Kubernetes > Kubernetes Basics' 카테고리의 다른 글
📌 Kubernetes Helm 활용: 효율적인 애플리케이션 배포 전략 (0) | 2025.03.04 |
---|---|
📌 Kubernetes 이벤트 기반 자동 확장: KEDA 사용하기 (0) | 2025.03.04 |
📌 Kubernetes 배포 전략: Canary & Blue-Green 배포 이해하기 (0) | 2025.03.03 |
📌 Kubernetes 로그 & 모니터링 운영 전략 (0) | 2025.03.03 |
📌 Kubernetes 비용 절감 & 리소스 최적화 전략 (0) | 2025.03.03 |