CI/CD 학습 가이드
Terraform (IaC) → Spring Boot → GitHub Actions → Argo CD → AWS EKS
목차
파이프라인 한눈에 보기
| 단계 | 도구 | 역할 |
|---|---|---|
| 1 | Terraform | VPC, EKS, ECR, IAM 등 인프라 선언 |
| 2 | Spring Boot | 배포 대상 애플리케이션 |
| 3 | GitHub Actions | 빌드 · 테스트 · 이미지 푸시 · 매니페스트 갱신 |
| 4 | Argo CD | Git 상태를 클러스터에 동기화 (GitOps) |
| 5 | AWS EKS | Kubernetes 워크로드 실행 |
커리큘럼
| Day | 주제 | 링크 |
|---|---|---|
| Day 1 | Terraform으로 EKS 기반 인프라 | day1-terraform-iac |
| Day 2 | Spring Boot 앱 · Docker 이미지 | day2-spring-app |
| Day 3 | GitHub Actions CI | day3-github-actions |
| Day 4 | Argo CD GitOps | day4-argocd |
| Day 5 | EKS 배포 · E2E 점검 | day5-eks-e2e |
선수 지식
- Git 브랜치·PR 기초
- Docker 이미지·컨테이너 기초
- Kubernetes Pod / Deployment / Service 개념
- Terraform
init/plan/apply(또는 Day 1에서 병행) - AWS 계정 ·
awsCLI ·kubectl(권장)
저장소 권장 구조
실습은 앱 저장소와 매니페스트(GitOps) 저장소를 나누는 것을 권장합니다.
# app repo (예: spring-demo)
spring-demo/
├── src/
├── Dockerfile
├── pom.xml / build.gradle
└── .github/workflows/ci.yml
# gitops repo (예: spring-demo-gitops)
spring-demo-gitops/
├── apps/spring-demo/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
└── argocd/application.yaml
단일 모노레포도 가능하지만, CI가 앱만 빌드하고 CD는 매니페스트만 추적하는 흐름이 분리됩니다.