Kubernetes Helm 배포 구조 개선

ddoachi·2025년 6월 15일

TekaPicker

목록 보기
24/30

배경

기존 teka-picker-be 프로젝트의 Kubernetes 배포는 앱마다 개별적인 deployment.yaml, service.yaml 파일을 사용하는 구조였음. 이 구조는 중복이 많고 앱 추가 시 반복적인 작업이 발생하여 유지보수성이 떨어졌음. 이를 해결하기 위해 다음과 같은 작업을 진행함:

  • Helm 템플릿 구조 개선
  • 공통화된 deployment.yaml, service.yaml 템플릿 도입
  • values.yaml 기반 설정 주입 방식 전환
  • deploy.sh 스크립트에 앱 선택 및 삭제 기능(gum 기반) 추가
  • kubeadm 재설정 및 .88 주소 흔적 제거

1. Helm 템플릿 구조 개선

변경 전

  • 각 앱별 폴더에 deployment.yaml, service.yaml 존재
  • 중복된 구조 및 하드코딩된 설정 다수 존재

변경 후

  • 공통 템플릿 사용: templates/deployment.yaml, templates/service.yaml
  • values.yaml에 다음 정보만 선언:
appName: api-gateway
image:
  repository: 192.168.1.111:5000/tekapicker-dev/api-gateway
  tag: dev
service:
  type: NodePort
  port: 80
  nodePort: 31000
env:
  NODE_ENV: production

2. kubeadm 초기화 및 네트워크 설정

문제 상황

  • 기존 .88 주소를 사용하는 구성 → 다른 NIC와 충돌
  • flannel pod 오류 (subnet.env 파일 없음, pod CIDR 미할당)

조치 내역

sudo kubeadm reset
sudo rm -rf ~/.kube
sudo kubeadm init --apiserver-cert-extra-sans 192.168.1.111
mkdir -p ~/.kube && sudo cp /etc/kubernetes/admin.conf ~/.kube/config && sudo chown $(id -u):$(id -g) ~/.kube/config

# flannel 재적용
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

3. Registry 이미지 문제 해결

문제점

  • Helm 템플릿은 latest 태그로 지정된 이미지를 사용
  • docker pushdev 태그만 푸시되어 ImagePull 오류 발생

해결 방법

  • values.yaml에서 image.tag: dev로 명시
  • Helm 배포 시 해당 tag 기준으로 이미지 지정
image:
  repository: 192.168.1.111:5000/tekapicker-dev/api-gateway
  tag: dev

4. deploy.sh 기능 추가

명령어 인터페이스 개선

./scripts/deploy.sh -c deploy -a api-gateway,menu
./scripts/deploy.sh -c delete -a api-gateway

주요 기능

  • gum으로 앱 선택 UI 구성
  • delete 모드일 경우, 선택한 앱의 pod를 kubectl delete pod로 삭제
  • 배포 모드일 경우, Helm upgrade 또는 install 실행

결론

Helm 템플릿 공통화, values.yaml 기반 설정, kubeadm 재설정, 배포 스크립트 개선을 통해 유지보수성과 확장성을 모두 확보할 수 있었음. 특히 gum을 활용한 CLI 인터페이스 개선으로 작업 효율도 향상되었음.

kubectl get svc -n tekapicker-dev
kubectl get pods -n tekapicker-dev

위 명령어로 배포 상태를 점검 가능하며, 필요 시 deploy.sh를 통해 빠르게 앱을 배포/삭제할 수 있음.

profile
내일도 풀스택

0개의 댓글