Jenkins + ArgoCD GitOps 기반 완전 자동화된 CI/CD 파이프라인
AWS EKS 환경에서 Spring Boot 애플리케이션 배포 자동화 및 Prometheus/Grafana 모니터링 구축
| 지표 | Before | After | 개선율 |
|---|---|---|---|
| 배포 시간 | 25분 | 5분 | 80% 단축 ⚡ |
| 배포 빈도 | 주 2-3회 | 주 5-10회 | 200% 증가 📈 |
| 배포 성공률 | 85% | 100% | +15%p ✅ |
| 롤백 시간 | 15분 | 2분 | 87% 단축 ⏪ |
| 다운타임 | 5-7분 | 0분 | 100% 제거 🎯 |
✅ Git Push 한 번으로 전체 배포 프로세스 자동화 (평균 5분)
✅ 무중단 배포 (Zero-Downtime) 달성 - 50+ 배포에서 다운타임 0분
✅ Kaniko Daemon-less 빌드로 보안 강화
✅ GitOps 도입으로 배포 이력 추적 가능
✅ Prometheus/Grafana로 실시간 모니터링 (3개 대시보드)
Developer (git push)
↓
GitHub (Webhook)
↓
Jenkins (5-Stage Pipeline)
├── Checkout
├── Build & Test (Gradle)
├── Docker Build (Kaniko)
├── Update Manifest
└── Trigger ArgoCD
↓
ArgoCD (GitOps)
↓
EKS (Rolling Update)
↓
End Users (Zero Downtime)
- Cloud: AWS (EKS, RDS, ElastiCache, ALB, CloudFront, Route53)
- IaC: Terraform 1.5+ (7개 모듈)
- Container: Kubernetes 1.30
- CI: Jenkins LTS
- CD: ArgoCD (GitOps)
- Build: Kaniko (Daemon-less)
- Registry: Amazon ECR
- Backend: Spring Boot 3.2 (Java 17)
- Database: RDS MySQL (Multi-AZ)
- Cache: ElastiCache Redis
- ORM: Spring Data JPA + HikariCP
- Metrics: Prometheus
- Visualization: Grafana (3개 대시보드)
# 1. Repository 클론
git clone https://github.com/qkrtpdlr/kubernetes-cicd-portfolio.git
cd kubernetes-cicd-portfolio
# 2. Kubernetes 클러스터 접속 (EKS 예시)
aws eks update-kubeconfig --region ap-northeast-2 --name fresh-chicken-eks
# 3. 애플리케이션 배포
kubectl apply -f kubernetes/app/
# 4. 모니터링 스택 배포
kubectl apply -f kubernetes/monitoring/
# 5. 배포 상태 확인
kubectl get pods -n fresh-chicken
kubectl get svc -n fresh-chickenFresh Chicken 주문 플랫폼 - RESTful API 기반 주문 관리 시스템
- ✅ 주문 생성/조회/취소 API
- ✅ MySQL 연동 (Spring Data JPA)
- ✅ Redis 캐싱 (85% Hit Rate)
- ✅ Health Check + Prometheus 메트릭
- HTTP Request Rate: 120 req/s
- P95 Response Time: 150ms
- Cache Hit Rate: 85%
- Jenkins CI/CD Dashboard - 빌드 성공률, 평균 빌드 시간
- ArgoCD GitOps Dashboard - Sync 상태, Application Health
- Application Dashboard - HTTP 요청, JVM 메트릭
👉 모니터링 가이드
- Jenkins Pipeline 설계 - 5-Stage 파이프라인 구축
- ArgoCD GitOps 연동 - 자동 배포 워크플로우
- Spring Boot 개발 - RESTful API + MySQL/Redis 연동
- ALB Ingress 설정 - 도메인별 라우팅 (5개 서비스)
- Kubernetes Manifest - Deployment, Service, HPA
- 모니터링 구축 - Prometheus + Grafana 3개 대시보드
- 트러블슈팅 - 8개 이슈 해결
👉 트러블슈팅 상세
| 카테고리 | 문서 |
|---|---|
| 아키텍처 | 시스템 아키텍처 |
| 설치 | 설치 가이드 |
| 애플리케이션 | Spring Boot 가이드 |
| 운영 | 모니터링 가이드 |
| 트러블슈팅 | 이슈 해결 과정 |
| 학습 | 학습 성과 |
| 계획 | 향후 개선 사항 |
- Spring Boot App - RESTful API (Java 17, MySQL, Redis)
- Kubernetes Manifests - 애플리케이션 배포 설정 + Prometheus/Grafana 모니터링
- Jenkins Pipeline - 5-Stage CI/CD 자동화 (Checkout → Build → Docker → Deploy)
- 상세 문서 - 8개 가이드 (설치/운영/트러블슈팅/학습/개선계획)
| 항목 | 내용 |
|---|---|
| 기간 | 2024.07 ~ 2024.08 (4주) |
| 팀 구성 | 4명 |
| 본인 역할 | CI/CD Engineer |
| 본인 기여도 | 35% |
- Email: rlagudfo1223@gmail.com
- GitHub: https://github.com/qkrtpdlr