<1>헬름 설치와 사용법 1 # 터미널 1 k ns default watch -d kubectl get deployment,rs,pods,svc 2 # 터미널 2 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh helm version 3 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update 4 helm repo list 5 # 'my-release'라는 이름으로 nginx 설치 helm install my-release bitnami/nginx <2> 나만의 헬름 차트 생성하기 7 나만의 헬름 차트 생성하기 쿠버네티스 YAML 파일을 직접 다룰 때보다 헬름(Helm)이 복잡하게 느껴지는 이유는 **'자동화된 틀(Template)'**을 만드는 과정이 추가되기 때문입니다. 하지만 한 번만 제대로 잡아두면 나중에는 values.yaml 파일의 숫자만 바꿔서 모든 것을 컨트롤할 수 있어 훨씬 편해집니다. 1단계: 차트 생성 및 초기화 헬름이 만들어주는 복잡한 기본 파일들을 무시하고, 깨끗한 상태에서 시작합니다. # 1. 차트 기본 구조 생성 helm create web-demo-chart # 2. 복잡한 기본 템플릿 싹 지우기 (우리가 직접 만들 거예요) rm -rf web-demo-chart/templates/* 2단계: 설정값(values.yaml) 정의 여기에 적는 내용이 나중에 템플릿의 빈칸을 채우는 **'변수'**가 됩니다. cat < web-demo-chart/values.yaml replicaCount: 5 image: repository: nginx tag: "1.23" service: type: LoadBalancer port: 80 rollingUpdate: maxSurge: "50%" maxUnavailable: "0%" EOF 3단계: 템플릿(deployment.yaml) 작성 이제 values.yaml에서 설정한 값들을 가져다 쓰는 실제 설계도를 만듭니다. cat < web-demo-chart/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-demo spec: replicas: {{ .Values.replicaCount }} strategy: type: RollingUpdate rollingUpdate: maxSurge: {{ .Values.rollingUpdate.maxSurge }} maxUnavailable: {{ .Values.rollingUpdate.maxUnavailable }} selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: nginx image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" ports: - containerPort: {{ .Values.service.port }} EOF 4단계: 배포 및 확인 준비가 끝났습니다. 이제 명령 한 줄로 배포합니다. # 1. 설치 실행 helm install my-web ./web-demo-chart # 2. 결과 확인 helm list kubectl get pods 왜 이렇게 하나요? (핵심 요약) 붕어빵 틀(Template): 한 번 만들어두면 절대 안 바꿉니다. 재료(Values): 상황에 따라(운영용, 개발용 등) 이 파일만 바꿔서 여러 벌을 찍어냅니다. 관리(Helm): 설치된 앱을 helm history나 helm rollback으로 쉽게 관리합니다. 정말 간단하죠? 이제 values.yaml에서 replicaCount를 3으로 바꾸고 helm upgrade my-web ./web-demo-chart를 입력해 보세요. 헬름의 진가를 바로 확인하실 수 있습니다. <3> 실습 1 실습 1: 애플리케이션 업데이트 (1.23 → 1.25) values.yaml 파일을 직접 수정해도 되지만, 헬름은 --set 옵션을 통해 명령어 한 줄로 즉시 업데이트가 가능합니다 # Nginx 버전을 1.25로 업데이트하면서 포드 개수를 3개로 조정 helm upgrade my-web ./web-demo-chart --set image.tag="1.25" --set replicaCount=3 확인하기: kubectl get pods: 포드가 5개에서 3개로 줄어들며 버전이 바뀌는 과정을 실시간으로 볼 수 있습니다. helm history my-web: REVISION 2가 생성된 것을 확인할 수 있습니다. Release "my-web" has been upgraded. Happy Helming! NAME: my-web LAST DEPLOYED: Tue Feb 17 20:27:52 2026 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: None helm history my-web 2 실습 2: 헬름 롤백 (장애 복구) 만약 업데이트한 버전(1.25)에 문제가 생겨서 이전 상태(1.23, 포드 5개)로 되돌려야 한다면 어떻게 할까요? 헬름은 아주 간단합니다. # 리비전 1번 상태로 즉시 되돌리기 helm rollback my-web 1 확인하기: kubectl get pods: 다시 포드가 5개로 늘어나며 이전 버전으로 복구됩니다. helm history my-web: 롤백 기록이 포함된 REVISION 3가 생성됩니다. helm history my-web 3 실습 3: 깔끔하게 리소스 삭제 실습이 끝난 후에는 헬름 명령어 한 줄로 로드밸런서까지 모두 정리합니다. Bash # 설치된 릴리스 삭제 helm uninstall my-web 4 오늘의 요약 오늘 헬름을 통해 경험하신 핵심 가치는 다음과 같습니다: 템플릿화: 복잡한 YAML 대신 변수(values.yaml)로 관리. 버전 관리: 업데이트 기록이 남고 언제든 롤백 가능. 한방 정리: install부터 uninstall까지 한 줄로 해결. - 삭제 # 헬름으로 설치한 my-web 삭제 (로드밸런서까지 한 번에 정리됨) helm uninstall my-web # 삭제 확인 helm list # 클러스터 이름과 리전이 맞는지 확인 후 실행 eksctl delete cluster --name free-vpc-cluster --region ap-northeast-2 최종 확인 (AWS 콘솔) 명령어가 끝난 후, AWS 웹 콘솔에서 다음 항목들이 비어 있는지 꼭 눈으로 확인해 주세요. EC2 > Instances: 실행 중인(Running) 인스턴스가 없어야 합니다. EC2 > Load Balancers: my-web 관련 로드밸런서가 삭제되었는지 확인합니다. EKS: 클러스터 목록에 아무것도 없어야 합니다. CloudFormation: 관련 스택(Stacks)들이 모두 DELETE_COMPLETE 상태여야 합니다.