정지용
기술스택 목록
DevOps

Helm

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

쿠버네티스 애플리케이션을 패키지·배포·관리하는 패키지 매니저

Helm은 쿠버네티스 리소스 매니페스트를 '차트(Chart)'라는 단위로 묶어 재사용 가능하게 만들어주는 패키지 매니저입니다. 쿠버네티스는 애플리케이션 하나를 배포하는 데도 여러 개의 YAML 매니페스트가 필요한데, 환경마다 값이 조금씩 달라지는 매니페스트를 수작업으로 관리하면 중복과 실수가 늘어나는 문제가 있었습니다. Helm은 템플릿 엔진으로 매니페스트를 변수화하고, 설치·업그레이드·롤백·삭제 같은 배포 생명주기를 명령 하나로 처리할 수 있게 해줍니다. 오픈소스 커뮤니티나 벤더가 미리 만들어 둔 차트를 그대로 가져다 쓸 수도 있어 표준 컴포넌트 설치 도구로도 널리 쓰입니다.

이럴 때 사용합니다

  • 동일한 애플리케이션을 개발/스테이징/운영 등 여러 환경에 값만 바꿔 배포할 때
  • argo-cd, cert-manager, ingress-nginx처럼 커뮤니티가 배포하는 표준 컴포넌트를 손쉽게 설치할 때
  • 여러 개의 YAML 매니페스트를 한 번에 설치·업그레이드·롤백해야 할 때
  • 배포 이력과 버전 관리를 통해 배포 실수를 빠르게 되돌리고 싶을 때

핵심 개념

Chart
쿠버네티스 리소스 템플릿과 메타데이터를 묶은 패키지 단위로, Helm이 배포하는 최소 구성 요소입니다.
Release
차트를 특정 클러스터/네임스페이스에 실제로 설치한 인스턴스로, 같은 차트도 릴리스 이름을 다르게 하면 여러 번 독립적으로 설치할 수 있습니다.
Values
차트 템플릿에 주입되는 설정값으로, values.yaml 파일이나 CLI 옵션으로 환경별 차이를 반영합니다.
Templating
Go 템플릿 문법을 이용해 YAML 매니페스트 안에 변수, 조건문, 반복문을 넣어 동적으로 리소스를 생성하는 방식입니다.
Repository
차트를 모아두고 버전별로 배포하는 저장소로, HTTP로 접근 가능한 인덱스와 패키지 파일들로 구성됩니다.
Release history / Rollback
Helm은 릴리스가 업그레이드될 때마다 이력을 남겨, 문제가 생기면 이전 버전 상태로 되돌릴 수 있습니다.

차트 저장소 등록 후 설치하기

ingress-nginx 차트를 저장소에서 받아 설치하고, 값을 바꿔 업그레이드한 뒤 이전 상태로 롤백하는 기본 흐름입니다.

Shell
# 차트 저장소 추가
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

# 차트 설치 (릴리스 이름: ingress-nginx)
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  --set controller.replicaCount=2

# 설정 변경 후 업그레이드
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
  --set controller.replicaCount=3

# 문제 발생 시 이전 버전으로 롤백
helm rollback ingress-nginx 1

처음 쓸 때 흔한 함정

  • values.yaml 구조를 이해하지 않고 --set만 남발하면 어떤 값이 실제로 적용됐는지 추적하기 어려워집니다.
  • helm upgrade 시 --install 옵션 없이 존재하지 않는 릴리스를 업그레이드하려 하면 실패합니다.
  • 차트가 삭제된다고 PVC 등 일부 리소스까지 자동으로 정리되지 않는 경우가 있어 확인이 필요합니다.

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.