728x90
GitOps란 무엇인가
GitOps는 Git을 인프라와 애플리케이션 배포의 유일한 진실 공급원(Single Source of Truth)으로 삼는 운영 방식이다. 개발자가 Git에 코드를 푸시하면, 시스템이 자동으로 클러스터 상태를 원하는 상태(Desired State)와 동기화한다. kubectl apply를 직접 실행하거나, 배포 스크립트를 수동으로 돌리는 방식과는 근본적으로 다르다.
CNCF 2025 조사에 따르면 클라우드 네이티브 기업의 58%가 GitOps를 도입했으며, 도입 후 배포 빈도는 3.2배 증가하고 장애 복구 시간은 평균 68% 단축됐다.
ArgoCD 선택 이유: Flux vs ArgoCD 비교
| 항목 | ArgoCD | FluxCD |
|---|---|---|
| UI 제공 | O (웹 대시보드) | X (CLI 중심) |
| 멀티 클러스터 | 기본 지원 | 설정 필요 |
| RBAC 세분화 | 강력 | 기본적 |
| Helm 지원 | O | O |
| 학습 곡선 | 중간 | 낙음 |
| 커뮤니티 | 더 활발 | 활발 |
소규모 팀이라면 ArgoCD의 웹 UI가 배포 상태를 직관적으로 파악하게 해줘 초기 도입 시 훨씬 편리하다.
Step 1: ArgoCD 설치
# Kubernetes 클러스터에 ArgoCD 네임스페이스 생성
kubectl create namespace argocd
# ArgoCD 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 설치 확인 (모든 Pod가 Running 상태여야 함)
kubectl get pods -n argocd
# 초기 admin 패스워드 확인
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
# 포트 포워딩으로 UI 접속 (localhost:8080)
kubectl port-forward svc/argocd-server -n argocd 8080:443
Step 2: Git 저장소 구조 설계
k8s-manifests/
├── apps/
│ ├── production/
│ │ ├── api-server/
│ │ │ ├── deployment.yaml
│ │ │ ├── service.yaml
│ │ │ └── ingress.yaml
│ │ └── frontend/
│ └── staging/
└── base/
├── namespace.yaml
└── rbac.yaml
Step 3: ArgoCD Application YAML
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: api-server-production
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/your-org/k8s-manifests
targetRevision: main
path: apps/production/api-server
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3m
Step 4: CI/CD 파이프라인 연동 (GitHub Actions)
name: Build and Deploy
on:
push:
branches: [main]
jobs:
build-and-update-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build and push Docker image
run: |
docker build -t ghcr.io/your-org/api-server:${{ github.sha }} .
docker push ghcr.io/your-org/api-server:${{ github.sha }}
- name: Update manifest
run: |
git clone https://github.com/your-org/k8s-manifests
cd k8s-manifests
sed -i "s|image: .*|image: ghcr.io/your-org/api-server:${{ github.sha }}|" apps/production/api-server/deployment.yaml
git config user.email "ci@your-org.com"
git config user.name "CI Bot"
git add . && git commit -m "chore: update image tag" && git push
도입 전후 실제 효과
| 지표 | 도입 전 | 도입 후 | 변화 |
|---|---|---|---|
| 월 평균 배포 건수 | 12회 | 87회 | +625% |
| 배포 관련 장애 | 월 5건 | 월 1건 | -80% |
| 장애 복구 시간 | 47분 | 8분 | -83% |
| 배포 소요 시간 | 25분 | 4분 | -84% |
결론
GitOps는 "배포는 코드 리뷰와 같다"는 철학을 인프라에 적용한 것이다. ArgoCD를 도입하면 배포 이력이 Git 커밋 로그로 남고, 문제가 생기면 git revert 한 줄로 롤백할 수 있다.
300x250
'IT & 개발' 카테고리의 다른 글
| 주니어 개발자가 사라지는 시대 - AI와 경쟁 말고 협업하는 2026년 콜리어 전략 (0) | 2026.03.16 |
|---|---|
| React Server Components 완전 정복 - 기존 방식과 코드 비교로 배우는 RSC 실전 가이드 (0) | 2026.03.13 |
| PostgreSQL 18 핵심 변경 3가지 - 비동기 I/O, UUIDv7, Skip Scan으로 쿼리 응답시간 단축하기 (0) | 2026.03.13 |
| SK하이닉스 HBM4 엔비디아 납품 임박 - AI 반도체 패권 전쟁이 개발자에게 미치는 영향 (0) | 2026.03.13 |
| 기술 부채란 무엇인가 - 개발팀이 망하는 6가지 패턴과 현실적 해결 전략 (0) | 2026.03.13 |
댓글