
Helm은 쿠버네티스의 패키지 관리자(Package Manager)이다. 리눅스 환경에서 사용하는 YUM(RedHat 계열)이나 APT(Debian 계열)와 동일한 개념으로 이해할 수 있다.
패키지 관리자란?
패키지 관리자는 소프트웨어의 설치, 업데이트, 구성 및 제거 과정을 자동화하는 도구 모음이다. 의존성 문제를 해결하고 소프트웨어를 일관된 방식으로 관리할 수 있게 도와준다. Helm은 쿠버네티스 환경에서 이러한 역할을 수행한다.
Helm은 오픈 소스 소프트웨어이며, Redis 클러스터나 WordPress 환경처럼 복잡한 구성을 가진 애플리케이션도 명령어 하나로 쿠버네티스 클러스터에 간편하게 배포할 수 있도록 지원한다. 또한, 롤링 업데이트 등 쿠버네티스에 최적화된 다양한 배포 전략을 지원하여 운영 효율성을 높이는 장점이 있다.
Helm을 설치하는 방법은 크게 세 가지가 있다.
원하는 버전의 압축 파일을 직접 다운로드하여 설치하는 방식이다.
# 명령어 형식
curl -sL https://get.helm.sh/helm-v[버전]-[운영체제]-amd64.tar.gz -o [저장할 파일 경로]
# 예시 (v3.18.4)
curl -sL https://get.helm.sh/helm-v3.18.4-linux-amd64.tar.gz -o /tmp/helm.tar.gz
제공되는 스크립트를 실행하여 시스템에 맞는 최신 버전을 자동으로 설치한다.
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
apt (Debian/Ubuntu), yum (CentOS/Fedora), brew (macOS) 등 운영체제의 패키지 매니저를 사용하여 설치할 수 있다.
OS 종류와 버전을 변수로 지정하여 명확하게 다운로드한다.
# 환경변수 설정
OS_TYPE=linux
VERSION=3.18.4
# 다운로드 실행
curl -sL https://get.helm.sh/helm-v${VERSION}-${OS_TYPE}-amd64.tar.gz -o /tmp/helm.tar.gz
다운로드한 /tmp 디렉터리로 이동하여 압축을 해제한다.
tar -xvf ./helm.tar.gz
helm 실행 파일을 시스템 어디에서든 실행할 수 있도록 $PATH에 포함된 디렉터리(예: /usr/local/bin)로 이동시킨다.
# /tmp/linux-amd64/helm 파일을 /usr/local/bin 디렉터리로 이동시킵니다.
# 시스템 디렉터리에 파일을 옮기는 것이므로 관리자 권한(sudo)이 필요합니다.
sudo mv /tmp/linux-amd64/helm /usr/local/bin/
필요시 파일에 실행 권한을 부여한다.
sudo chmod 755 /usr/local/bin/helm
터미널에서 helm 명령어 자동 완성 기능을 사용하기 위해 아래 스크립트를 실행한다. 매번 적용하려면 .bashrc 또는 .zshrc 파일에 추가한다.
source <(helm completion bash)
helm help 명령어를 실행하면 Helm이 사용하는 설정, 데이터, 캐시 디렉터리 경로를 확인할 수 있다.

마지막으로 helm version 명령어를 통해 설치된 버전을 확인한다.

차트(Chart)는 Helm에서 사용하는 패키징 형식이며, 쿠버네티스 리소스들을 하나의 패키지로 묶어놓은 배포 단위이다. 즉, 쿠버네티스 애플리케이션을 배포하기 위한 모든 정보가 담긴 설치 패키지라고 할 수 있다.
애플리케이션 설치 자동화: Deployment, Service, ConfigMap, Ingress 등 배포에 필요한 여러 쿠버네티스 리소스를 한 번에 설치하고 관리한다.
환경별 설정 분리: values.yaml 파일에 환경별(개발/운영 등) 설정 값을 정의하고, 이 값만 변경하여 차트를 손쉽게 재사용할 수 있다.
버전 관리: 차트 자체에 버전을 부여하여, 특정 버전의 배포 상태를 언제든지 동일하게 재현할 수 있다.
의존성 관리: 특정 차트가 다른 차트에 의존하는 경우, 이를 정의하여 함께 배포할 수 있다.
Helm은 기본적으로 저장소가 설정되어 있지 않으므로, 차트를 검색하고 설치하기 위해서는 저장소를 직접 추가해야 한다.
Helm이 공식적으로 관리했던 차트들은 성숙도에 따라 stable과 incubator로 구분되었다. (현재는 deprecated 되었지만 여전히 많은 자료에서 참조된다.) 각 차트는 GitHub에서 관리되며, stable 차트는 아래와 같은 기준을 만족한다.
업데이트 및 데이터 영속성 지원
보안성 고려
적절한 기본값 제공
쿠버네티스 모범 사례 준수
# 저장소 추가 명령어
helm repo add stable https://charts.helm.sh/stable

Bitnami는 대중적인 오픈소스 애플리케이션 차트를 모아놓은 공식 차트 저장소이다. MySQL, WordPress, Redis, Nginx 등 잘 구성된 애플리케이션을 쉽게 배포할 수 있다. 대부분의 차트가 프로덕션(운영) 환경에서 사용 가능한 수준(Production-Ready)이므로 테스트뿐만 아니라 실제 서비스 배포에도 유용하다.
# 저장소 추가 명령어
helm repo add bitnami https://charts.bitnami.com/bitnami

추가된 저장소 목록 확인
helm repo list

저장소 정보 최신화
로컬에 저장된 저장소의 차트 정보를 최신 버전으로 업데이트한다.
helm repo update
먼저 bitnami 저장소에서 wordpress 차트를 검색한다.
helm search repo wordpress
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/wordpress 25.0.8 6.8.2 WordPress is the world's most popular blogging ...
bitnami/wordpress-intel 2.1.31 6.1.1 DEPRECATED WordPress for Intel is the most popu...
stable/wordpress 9.0.3 5.3.2 DEPRECATED Web publishing platform for building...
helm search hub wordpress설치 전에 values와 readme를 확인하여 설정 가능한 값과 사용법을 숙지하는 것이 좋다.
# 설정 가능한 파라미터 확인
helm show values bitnami/wordpress
# 차트 공식 문서(README) 확인
helm show readme bitnami/wordpress
helm install 명령어로 차트를 클러스터에 배포한다. 이때 배포된 인스턴스를 릴리스(Release) 라고 부른다.
명령어: helm install [릴리스_이름] [차트_이름] --version [버전]
릴리스 이름: 내가 관리할 배포의 고유한 이름 (여기서는 sample-wordpress)
helm install sample-wordpress bitnami/wordpress --version 25.0.8
배포가 완료되면 kubectl을 통해 Pod와 Service가 정상적으로 생성되었는지 확인한다.
Running 상태인지 확인한다.kubectl get pods

kubectl get svc

배포했던 릴리스와 관련된 모든 리소스를 한 번에 삭제한다.
명령어: helm uninstall [릴리스_이름]
helm uninstall sample-wordpress