AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

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.jsonstart 스크립트 추가 ("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로 즉시 배포 가능