본문 바로가기
클라우드/쿠버네티스

쿠버네티스의 App Store, Helm으로 복잡한 매니페스트 한 번에 관리하기

by gasbugs 2026. 2. 16.

안녕하세요! 지난번 Kustomize에 이어, 오늘은 쿠버네티스 생태계에서 가장 널리 쓰이는 패키지 매니저인 **Helm(헬름)**에 대해 알아보겠습니다. 🚢

쿠버네티스 애플리케이션이 복잡해질수록 관리해야 할 YAML 파일은 기하급수적으로 늘어납니다. Helm은 이러한 수많은 매니페스트 파일을 하나의 '패키지'로 묶어 관리할 수 있게 해주는 강력한 도구입니다.


1. Helm이란 무엇인가요? 📦

Helm은 쿠버네티스를 위한 패키지 매니저입니다. 리눅스의 aptyum, Node.js의 npm과 같은 역할을 쿠버네티스에서 수행한다고 이해하면 쉽습니다.

  • 차트(Chart): 쿠버네티스 리소스를 정의한 파일들의 집합(패키지)입니다.
  • 리포지토리(Repository): 차트들을 저장하고 공유하는 저장소입니다.
  • 릴리스(Release): 클러스터에 설치된 차트의 특정 실행 인스턴스입니다. 동일한 차트를 여러 번 설치하면 각각 고유한 릴리스 이름을 갖게 됩니다.

2. Helm의 핵심 구조: 템플릿 엔진 🏗️

Kustomize가 기존 YAML 위에 설정을 덧씌우는 '오버레이' 방식이라면, Helm은 YAML 내부에 변수를 삽입하는 '템플릿(Template)' 방식입니다. Go 템플릿 문법을 사용하여 상황에 따라 동적으로 YAML을 생성합니다.

 

3. Helm 차트의 구성 요소 📂

표준적인 Helm 차트의 디렉토리 구조는 다음과 같습니다.

my-chart/
├── Chart.yaml          # 차트의 메타데이터 (이름, 버전 등)
├── values.yaml         # 템플릿에 주입할 기본 설정값
├── charts/             # 이 차트가 의존하는 다른 차트들
└── templates/          # 실제 쿠버네티스 매니페스트 템플릿들
    ├── deployment.yaml
    ├── service.yaml
    └── _helpers.tpl    # 공통으로 사용할 템플릿 코드

🔹 템플릿 예시 (templates/deployment.yaml)

{{ .Values.replicaCount }}와 같은 형태로 변수를 사용합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "my-chart.fullname" . }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: my-app
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

🔹 설정값 예시 (values.yaml)

템플릿에 들어갈 실제 값을 정의합니다.

replicaCount: 3
image:
  repository: my-repo/my-app
  tag: "1.0.0"

4. 주요 명령어 사용법 💻

Helm을 사용하여 애플리케이션을 관리하는 기본적인 명령어들입니다.

# 1. 차트 리포지토리 추가
helm repo add bitnami https://charts.bitnami.com/bitnami

# 2. 차트 검색
helm search repo nginx

# 3. 차트 설치 (Release 생성)
helm install my-web bitnami/nginx

# 4. 설정값을 변경하여 업그레이드
helm upgrade my-web bitnami/nginx --set replicaCount=5

# 5. 이전 버전으로 롤백 (Helm의 강력한 기능!)
helm rollback my-web 1

# 6. 설치된 릴리스 삭제
helm uninstall my-web

5. Helm vs Kustomize: 무엇을 써야 할까? ⚖️

비교 항목 Helm Kustomize
방식 템플릿 기반 (Go Templates) 오버레이 기반 (Pure YAML)
복잡도 초기 학습 곡선이 높음 배우기 매우 쉬움
유연성 조건문, 반복문 등 강력한 로직 가능 정적인 변경 위주로 제한적임
버전 관리 릴리스 단위의 롤백 기능 내장 Git 등 외부 도구에 의존
용도 복잡한 상용 애플리케이션 배포 환경별 설정값 미세 조정

6. 마무리하며: Helm의 가치 🚀

Helm은 단순히 설치를 돕는 도구를 넘어, 애플리케이션의 라이프사이클 관리를 책임집니다. 특히 버전 관리와 롤백 기능은 운영 환경에서 장애 발생 시 빠른 복구를 가능하게 하는 핵심적인 이점입니다.

복잡한 마이크로서비스 아키텍처를 운영 중이거나, 오픈소스 소프트웨어를 클러스터에 배포해야 한다면 Helm은 선택이 아닌 필수입니다! 🌟