← 아티클 목록

쿠버네티스 Helm 차트 기초 — 패키지 매니저 이해

2028-07-31#kubernetes#helm#차트

쿠버네티스에 앱 하나를 올리려면 Deployment, Service, ConfigMap 같은 YAML을 여러 개 kubectl apply 해야 합니다. 환경마다 이미지 태그나 레플리카 수가 다르면 파일을 복사해 손으로 고치게 되고, 곧 관리가 엉킵니다. Helm은 이 여러 YAML을 하나의 패키지로 묶고, 바뀌는 값만 따로 빼서 관리하게 해 주는 도구입니다. 그래서 "쿠버네티스의 패키지 매니저"라고 부릅니다.

Helm의 네 가지 구성요소

Helm을 이해하는 핵심은 차트·템플릿·values·릴리스 네 가지입니다.

구성요소정체역할
차트(Chart)패키지 묶음앱 하나를 배포하는 YAML 템플릿 모음
템플릿(Template)변수가 들어간 YAML{{ .Values.image }} 같은 자리표시자 포함
values.yaml설정 값이미지 태그, 레플리카 등 바뀌는 값
릴리스(Release)설치 인스턴스클러스터에 실제로 배포된 차트의 한 번

차트는 templates/에 변수가 박힌 YAML을 담고, values.yaml에 그 변수의 기본값을 둡니다. helm install을 하면 둘을 합쳐 최종 YAML을 만들어 클러스터에 적용하고, 그 결과를 릴리스라는 이름으로 추적합니다.

values로 환경을 분리한다

같은 차트로 개발과 운영을 배포하되, 값만 다르게 주는 것이 Helm의 핵심 패턴입니다.

YAML
# values-prod.yaml
replicaCount: 3
image:
  tag: "1.4.2"
로컬 터미널
helm install myapp ./mychart -f values-prod.yaml
helm upgrade myapp ./mychart -f values-prod.yaml --set replicaCount=5

--set으로 한 값만 즉석에서 덮어쓸 수도 있습니다. 템플릿은 그대로 두고 값만 바꾸므로, 환경별로 YAML을 복제할 필요가 없습니다.

릴리스와 롤백

Helm은 설치·업그레이드할 때마다 리비전을 기록합니다. 그래서 문제가 생기면 이전 상태로 되돌릴 수 있습니다.

로컬 터미널
helm list
helm history myapp
helm rollback myapp 1

helm rollback myapp 1은 1번 리비전 상태로 클러스터를 되돌립니다. 어떤 YAML이 적용됐는지 손으로 추적하지 않아도 되는 점이 큰 장점입니다.

요점 정리

  • Helm은 여러 쿠버네티스 YAML을 하나의 차트로 묶는 패키지 매니저다.
  • 템플릿에 변수를 두고 values.yaml로 환경별 값을 분리한다.
  • helm install은 템플릿과 값을 합쳐 릴리스로 배포한다.
  • 릴리스는 리비전으로 기록되어 helm rollback으로 되돌릴 수 있다.

차트를 직접 만들고 values로 환경을 나눠 배포하는 실습은 쿠버네티스 트랙에서 할 수 있습니다 — 회원가입 없이 무료로.