기존 teka-picker-be 프로젝트의 Kubernetes 배포는 앱마다 개별적인 deployment.yaml, service.yaml 파일을 사용하는 구조였음. 이 구조는 중복이 많고 앱 추가 시 반복적인 작업이 발생하여 유지보수성이 떨어졌음. 이를 해결하기 위해 다음과 같은 작업을 진행함:
deployment.yaml, service.yaml 템플릿 도입values.yaml 기반 설정 주입 방식 전환deploy.sh 스크립트에 앱 선택 및 삭제 기능(gum 기반) 추가.88 주소 흔적 제거deployment.yaml, service.yaml 존재templates/deployment.yaml, templates/service.yamlvalues.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
.88 주소를 사용하는 구성 → 다른 NIC와 충돌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
latest 태그로 지정된 이미지를 사용docker push 시 dev 태그만 푸시되어 ImagePull 오류 발생values.yaml에서 image.tag: dev로 명시image:
repository: 192.168.1.111:5000/tekapicker-dev/api-gateway
tag: dev
deploy.sh 기능 추가./scripts/deploy.sh -c deploy -a api-gateway,menu
./scripts/deploy.sh -c delete -a api-gateway
gum으로 앱 선택 UI 구성kubectl delete pod로 삭제Helm 템플릿 공통화, values.yaml 기반 설정, kubeadm 재설정, 배포 스크립트 개선을 통해 유지보수성과 확장성을 모두 확보할 수 있었음. 특히 gum을 활용한 CLI 인터페이스 개선으로 작업 효율도 향상되었음.
kubectl get svc -n tekapicker-dev
kubectl get pods -n tekapicker-dev
위 명령어로 배포 상태를 점검 가능하며, 필요 시 deploy.sh를 통해 빠르게 앱을 배포/삭제할 수 있음.