우분투 환경 기준, Helm CLI 설치 절차는 다음과 같음.
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
설치 확인:
helm version
NestJS api-gateway용 Helm Chart 생성:
cd teka-picker-be
mkdir -p helm
cd helm
helm create api-gateway
helm/api-gateway/values.yaml 파일에서 다음 항목 구성:
replicaCount: 1
image:
repository: my-registry.local:5000/tekapicker/api-gateway
tag: latest
pullPolicy: IfNotPresent
service:
type: NodePort
port: 31000
ingress:
enabled: false
resources: {}
nodeSelector: {}
tolerations: []
affinity: []
serviceAccount:
create: false
annotations: {}
name: ""
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
deployment.yaml 파일에서 .Values.image.repository 및 .Values.service.port 사용하여 동적 설정 구성.
중괄호가 {{ → { { 등으로 변환되지 않도록 .prettierignore에 다음 항목 추가:
helm/**/*.yaml
helm/**/*.yml
기존 수동 배포된 api-gateway가 NodePort를 점유하고 있을 경우 중지 필요.
kubectl delete svc api-gateway -n tekapicker-dev
kubectl delete deployment api-gateway -n tekapicker-dev
또는 docker stop [컨테이너 ID] 등으로 중지.
helm install api-gateway ./helm/api-gateway -n tekapicker-dev
업데이트 시:
helm upgrade api-gateway ./helm/api-gateway -n tekapicker-dev
kubectl get pods -n tekapicker-dev
kubectl logs -f [pod-name] -n tekapicker-dev
서비스 접속 URL 확인:
export NODE_PORT=$(kubectl get --namespace tekapicker-dev -o jsonpath="{.spec.ports[0].nodePort}" services api-gateway)
export NODE_IP=$(kubectl get nodes --namespace tekapicker-dev -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
이 URL을 통해 NestJS API 또는 Swagger 문서 접속 가능.