티스토리 뷰
📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드 - NestJS CI/CD 자동화 파이프라인 구축하기 (GitHub Actions + ArgoCD + Helm)
octo54 2025. 4. 7. 10:31📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드
6. NestJS CI/CD 자동화 파이프라인 구축하기 (GitHub Actions + ArgoCD + Helm)
NestJS 마이크로서비스를 Kubernetes 환경에서 안정적으로 운영하기 위해서는 CI/CD(지속적 통합 및 배포) 파이프라인 구축이 필수입니다.
이번 글에서는 GitHub Actions를 이용한 자동 빌드/푸시, Helm으로 배포 설정 자동화, 그리고 ArgoCD를 통한 GitOps 방식 클러스터 배포 자동화를 단계별로 정리합니다. 🚀
✅ 1. CI/CD 구조 개요
[개발자 Git Push]
↓
[GitHub Actions]
- NestJS 빌드
- Docker 이미지 생성 & 푸시
↓
[Helm Chart 업데이트]
↓
[ArgoCD]
- 변경 감지 → 자동 배포
- Kubernetes 클러스터에 반영
✅ 2. GitHub Actions 설정
📂 .github/workflows/deploy.yml
name: CI/CD for NestJS Microservices
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Docker
uses: docker/setup-buildx-action@v2
- name: Log in to DockerHub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Build and Push API Gateway
run: |
docker build -f docker/Dockerfile.api-gateway -t ${{ secrets.DOCKER_USERNAME }}/api-gateway:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/api-gateway:latest
- name: Build and Push User Service
run: |
docker build -f docker/Dockerfile.user-service -t ${{ secrets.DOCKER_USERNAME }}/user-service:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/user-service:latest
🔐 secrets 설정은 GitHub Repository → Settings → Secrets → Actions 에서 등록
✅ 3. Helm Chart values 자동 업데이트 (선택)
방법 1: 수동으로 이미지 태그 수정
📂 helm/values.yaml
apiGateway:
image: your-docker-id/api-gateway:latest
userService:
image: your-docker-id/user-service:latest
방법 2: GitOps 방식 → ArgoCD에서 Git만 감지하고 자동 반영
✅ 4. ArgoCD로 GitOps 배포 자동화
✅ 설치 (Kubernetes 클러스터에)
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
✅ UI 접속
kubectl port-forward svc/argocd-server -n argocd 8080:443
브라우저 접속 → https://localhost:8080
✅ 5. ArgoCD 앱 생성
argocd app create nestjs-ms \
--repo https://github.com/your-id/nestjs-ms \
--path helm \
--dest-server https://kubernetes.default.svc \
--dest-namespace default \
--sync-policy automated
✅ 자동 동기화
argocd app set nestjs-ms --sync-policy automated
✅ 이제 GitHub에 코드가 머지되면 → GitHub Actions가 이미지 푸시 → Helm values 변경 → ArgoCD가 변경 감지 → Kubernetes에 자동 배포 완료!
✅ 6. 실전 Tips
- latest 태그 대신 git commit hash로 태그 버전화 → 롤백 용이
- Helm upgrade는 ArgoCD 내부에서 자동 수행
- Preview 환경을 위한 분기별 ArgoCD 앱 구성 추천 (dev, staging, prod)
- Helm secrets, Sealed Secrets, SOPS 등을 통한 보안 설정 연동 가능
✅ 결론: NestJS 마이크로서비스의 CI/CD 완전 자동화
✅ GitHub Actions로 자동 빌드 및 푸시
✅ Helm으로 배포 템플릿 관리
✅ ArgoCD로 Git 기반 배포 자동화(GitOps 방식)
✅ DevOps 없는 소규모 팀도 효율적인 운영 가능
다음 글에서는 **NestJS 서비스 운영 시 성능 최적화 및 보안 강화 전략 (HPA, Rate Limiting, Monitoring 등)**을 다룹니다.
🔍 다음 글 예고: NestJS 마이크로서비스 운영 최적화 & 보안 전략
📌 다음 편: 7. NestJS 운영 환경 성능 최적화 & 보안 가이드
NestJS CI/CD,NestJS GitHub Actions,NestJS ArgoCD,NestJS 배포 자동화,NestJS Helm Chart,NestJS GitOps,NestJS Kubernetes 배포 자동화,NestJS 마이크로서비스 운영,NestJS DevOps,NestJS Docker CI/CD
'project > NestJS + Kubernetes & 마이크로서비스 배포' 카테고리의 다른 글
- Total
- Today
- Yesterday
- REACT
- nextJS
- PostgreSQL
- 딥러닝
- kotlin
- Python
- JAX
- 개발블로그
- App Router
- rag
- llm
- SEO최적화
- gatsbyjs
- 파이썬알고리즘
- AI챗봇
- seo 최적화 10개
- 웹개발
- NestJS
- flax
- SEO 최적화
- Next.js
- 백엔드개발
- Prisma
- CI/CD
- Docker
- 프론트엔드
- nodejs
- fastapi
- Ktor
- 프론트엔드면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |