Kubernetes 로컬 환경 구축 및 ArgoCD, Helm을 활용한 Todo 앱 배포 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
초보자 및 중급 DevOps 엔지니어
- 난이도: 중간 (Kubernetes, Helm, ArgoCD 기본 지식 필요)
- 도움: 컨테이너 오케스트레이션, GitOps, CI/CD 실습 기회 제공
핵심 요약
- Kubernetes 로컬 환경 구축:
k3d
를 사용하여 가벼운 클러스터 생성 - ArgoCD 설치 및 사용: GitOps 워크플로우를 통한 자동화된 배포
- Helm 차트 활용: React + Express Todo 앱의 Kubernetes 배포 관리
- 필수 도구: Docker, Node.js, kubectl, Helm, k3d
섹션별 세부 요약
1. Kubernetes 로컬 클러스터 생성
k3d cluster create
명령어로todo-cluster
생성 (1 서버 + 2 워커 노드)kubectl get nodes
명령어로 클러스터 노드 상태 확인- 포트 포워딩 설정 (
8080:80
,30080:30080
)
2. ArgoCD 설치 및 설정
argocd
네임스페이스 생성 및 설치 명령어 실행argocd-server
서비스의NodePort
설정 후 UI 접근 (예:http://localhost:30080
)admin
계정의 초기 비밀번호를kubectl get secret
명령어로 확인
3. Todo 앱 개발
- 백엔드: Express 서버 구축 (
index.js
파일 생성,/api/todos
엔드포인트 정의) - 프론트엔드: React 앱 생성 (
create-react-app
사용) 및App.js
파일 수정 (Todo 데이터 요청/추가 로직) package.json
에start
스크립트 추가 ("start": "node index.js"
)
4. Docker 이미지 빌드 및 푸시
- 백엔드/프론트엔드 디렉토리별 Dockerfile 작성 (Node.js 18 기반,
npm install
및 빌드 명령 포함) docker build
명령어로 이미지 생성 (your-dockerhub-user/todo-backend
,your-dockerhub-user/todo-frontend
)- Docker Hub에 이미지 푸시 (
docker push
명령어 사용)
5. Helm 차트 생성 및 배포
helm create todo-chart
명령어로 Helm 차트 초기화values.yaml
파일에 이미지 정보 정의 (repository
,tag
포함)templates/
디렉토리에 백엔드/프론트엔드용 Deployment 및 Service 파일 분리kubectl apply -f
명령어로 Helm 차트 배포
6. Ingress 및 ArgoCD 애플리케이션 설정
- Ingress 리소스 정의 (
todo-ingress
생성,todo.local
도메인 매핑) /etc/hosts
파일에127.0.0.1 todo.local
추가- ArgoCD 애플리케이션 YAML 파일 생성 (
argocd-app.yaml
) 및kubectl apply
명령어로 배포 - ArgoCD UI에서 앱 상태 확인 (GitOps 기반 자동화 배포)
결론
- 실무 팁: ArgoCD를 활용한 GitOps 자동화를 통해 배포 효율성 향상
- 추천: Helm 차트를 서브차트로 분리하여 모듈화, CI/CD 워크플로우 추가 (GitHub Actions 활용)
- 예시:
helm template
명령어로 YAML 파일 생성 후kubectl apply
로 즉시 배포 가능