[MacOS 환경 #27] 헬름(Helm)

도람·2025년 11월 30일
post-thumbnail

헬름(Helm)이란? 왜 쓰는가

공식 문서 기준으로 헬름은

“쿠버네티스 애플리케이션을 정의·설치·업그레이드하는 패키지 매니저”

이다.

쿠버네티스로 뭔가를 배포하려고 하면 보통:

Deployment, Service, ConfigMap, Secret, Ingress …

이런 YAML 파일이 최소 수십 개씩 생긴다.
이걸 직접 다 관리하면

  • 파일 개수 너무 많고
  • 버전 업 할 때마다 여러 YAML 수정해야 하고
  • 롤백도 귀찮고
    점점 할 일이 복잡해진다.

헬름은 이걸 “차트(Chart)”라는 단위로 묶어서 관리한다.

  • Chart = 애플리케이션 하나를 배포하는 템플릿 묶음
  • values.yaml 에서 설정만 바꿔서 여러 환경(dev/stg/prod)에 재사용 가능
  • helm upgrade, helm rollback 으로 버전 업/롤백 관리 가능

결국 헬름을 쓰면:

  • “쿠버네티스 애플리케이션을 패키지처럼 설치/삭제/업데이트” 할 수 있게 된다.
  • 이미 만들어진 공식/커뮤니티 차트를 가져다 쓰기만 해도, Prometheus·Grafana·NGINX Ingress·MetalLB 같은 것들을 한방에 설치할 수 있다.

실습 시나리오

이번 벨로그에서는 헬름을 “맛만 보는” 수준으로 이렇게만 다룬다.

  • 헬름 설치
  • 헬름 기본 명령어 맛보기
  • 헬름으로 NGINX 샘플 차트 배포해보기

MetalLB 도 헬름으로 설치할 수 있지만, 이미 Kustomize로 한 번 다뤘으니
여기서는 헬름 공식 예제에 나오는 NGINX 같은 간단한 것 위주로 할 것이다.


실습

1. 헬름 설치

헬름은 그냥 바이너리 하나 다운받아서 PATH 에 두면 된다.

brew install helm

설치 확인:

helm version


이렇게 3.18.6버전이 성공적으로 설치된 것을 확인할 수 있다.


2. 헬름 기본 개념 & 명령어

용어 정리

용어의미
Chart하나의 앱을 배포하기 위한 템플릿 묶음
ReleaseChart가 실제 클러스터에 설치된 “인스턴스”
RepositoryChart들을 모아둔 저장소 (예: bitnami, grafana)

자주 쓰는 명령어

# 1) 리포지토리 추가
helm repo add <이름> <URL>

# 2) 리포지토리 목록 확인
helm repo list

# 3) 리포지토리 업데이트 (새 버전 차트 목록 받아오기)
helm repo update

# 4) 차트 검색
helm search repo nginx

# 5) 차트 설치
helm install <릴리스이름> <리포지토리/차트이름> [옵션]

# 6) 설치된 릴리스 목록
helm list -A   # 전체 네임스페이스

# 7) 릴리스 상태 확인
helm status <릴리스이름>

# 8) 릴리스 업그레이드
helm upgrade <릴리스이름> <리포지토리/차트이름> -f values.yaml

# 9) 릴리스 롤백
helm rollback <릴리스이름> <리비전번호>

# 10) 삭제
helm uninstall <릴리스이름>

3. NGINX 설치해보기

가장 간단하게 NGINX 웹 서버를 헬름으로 설치해본다.

1) 리포지토리 추가

여기서는 Bitnami 리포지토리를 예제로 쓴다.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

추가되었는지 확인:

helm repo list


2.설치 가능한 차트 검색

helm search repo nginx

여기서 bitnami/nginx 같은 항목이 보이는 것을 확인할 수 있다.


3. NGINX 차트 설치

네임스페이스는 default 기준으로 설명한다.

helm install my-nginx bitnami/nginx

설치 후 확인:

helm list
helm status my-nginx
kubectl get pods,svc -l app.kubernetes.io/name=nginx


서비스 타입이 LoadBalancer 나 ClusterIP 로 잡힐 텐데,
환경에 따라 NodePort로 바꾸고 싶으면 values.yaml 을 쓰면 된다.


참고자료:
[헬름 공식 홈페이지 - Using Helm]
https://helm.sh/docs/intro/using_helm/

profile
정도를 걷는 엔지니어

0개의 댓글