CI/CD 메모
Posted by Albert 15Day 11Hour 3Min 28Sec ago [2025-11-27]
1. 최신 자동 배포 트렌드 요약
요즘 업계의 핵심 트렌드는 **"GitOps"**입니다.
- 과거: Jenkins가 빌드도 하고, 서버에 접속해서 배포 명령(kubectl apply)도 직접 수행했습니다. (보안상 위험, 추적 어려움)
- 현재 (GitOps):
- CI (지속적 통합): Jenkins는 테스트하고, 빌드해서 Docker 이미지를 만드는 역할까지만 합니다.
- CD (지속적 배포): ArgoCD 같은 도구가 Git 저장소의 설정 파일(Manifest) 변경을 감지하여 Kubernetes 클러스터와 동기화합니다.
- 장점: "Git에 있는 코드가 곧 운영 서버의 상태"가 되며, 배포 이력이 Git에 남고 롤백이 매우 쉽습니다.
2. 추천 조합 (The Golden Path)
사용자님의 환경(Git, k8s, Jenkins)에 Docker와 ArgoCD를 추가하는 것을 강력 추천합니다.
추천 조합: Git + Jenkins (CI) + Docker Hub(또는 ECR/Harbor) + ArgoCD (CD) + Kubernetes
이 조합은 안정성, 확장성, 관리 편의성 면에서 현재 가장 널리 쓰이는 "Best Practice"입니다.
3. 자동 배포 진행 순서 (Pipeline Flow)
이 흐름대로 시스템이 동작하게 됩니다.
Step 1: CI (Continuous Integration) - Jenkins 영역
- Code Commit: 개발자가 코드를 Git에 푸시합니다.
- Webhook: Git이 Jenkins에게 "새 코드가 왔다"고 알립니다.
- Build & Test: Jenkins가 코드를 가져와 의존성을 설치하고(npm install), 빌드하고(npm run build), 테스트를 수행합니다.
- Containerize: Jenkins가 빌드된 결과물(HTML/JS/CSS)을 Nginx가 포함된 Docker 이미지로 만듭니다.
- Push: 만들어진 이미지를 이미지 저장소(Docker Registry)에 업로드합니다.
Step 2: CD (Continuous Deployment) - ArgoCD 영역
- Update Manifest: Jenkins가 (또는 개발자가) k8s 설정 파일(yaml)의 이미지 태그 버전을 업데이트하여 Git(설정 전용 Repo)에 푸시합니다.
- Sync: ArgoCD가 Git의 변경 사항을 감지하고, Kubernetes 클러스터에 새로운 이미지를 배포합니다.