Helm은 k8s용 패키지 매니저이다. 여기서 패키지는 k8s 리소스의 집합이고, Helm에서는 이를 '차트'라고 부른다.
k8s에서는 필연적으로 하나의 서버 애플리케이션을 구동하기 위해서는 다양한 k8s 리소스가 필요한데, Helm은 이를 편리하게 관리할 수 있도록 돕는다.
💡 Helm을 사용하기 위해서는 컴퓨터에 k8s 클러스터가 구동되고 있어야한다. minikube, k3s, kind 등등 로컬에서 k8s 클러스터를 구동할 수 있는 프로그램을 먼저 설치해주자.
설치를 위한 공식문서를 참고하여, 자신의 OS에 맞는 명령어를 통해서 Helm을 설치할 수 있다.
나는 Ubuntu를 사용하고 있으므로, 아래와 같은 명령어로 설치해주었다.
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
원하는 차트를 설치하기 위해서는 위와 같이 install
명령어를 통해서 설치할 수 있다.
위 명령어는 아래와 같이 구성된다.
NAME
: 어떤 이름으로 Helm 차트를 설치할 것인지CHART
: 어떤 차트를 설치할 것인지flags
: 기타 옵션💡 설치하고자하는 차트는 Artifact Hub에서 찾을 수 있다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-nginx bitnami/nginx --version 18.3.1
예시로 NginX Helm 차트를 설치해보도록 하겠다.
그리고, helm ls
명령어를 실행하면 아래와 같이 정상적으로 설치된 것을 확인할 수 있다.
기존에 생성된 차트를 업그레이드를 해야하는 경우엔 아래의 과정을 통해서 업그레이드할 수 있다.
yaml
작성replicaCount: 3
helm upgrade {Rlease 명} {차트 명} -f {위에서 생성한 yaml 파일}.yaml
// EX
helm upgrade my-nginx bitnami/nginx -f values.yaml
업그레이드가 성공하면, 아래와 같이 업그레이드가 성공했음을 나타내는 결과문이 출력된다.
아래 두 명령어를 통해서 내가 수정한 설정이 잘 적용됐는지도 확인할 수 있다.
helm get values my-nginx
helm get deploy
helm history my-nginx
위 명령어를 수행하면, 릴리즈에 대한 업데이트 이력이 출력된다.
현재 Revision은 2인데, 1로 롤백해보도록 하겠다.
helm rallback my-nginx 1 --dry-run # 롤백이 정상동작할 지 검증하는 명령어
helm rallback my-nginx 1
위 명령어를 통해서 특정 Revision으로 롤백할 수 있다.
릴리즈 내역을 조회해보면, 롤백한 것 또한 잘 기록된 것을 확인할 수 있다.
replicaCount
또한 3에서 1로 롤백된 것을 확인할 수 있다.
helm delete my-nginx
위와 같이 특정 릴리즈를 삭제할 수 있고, 릴리즈를 삭제하면 관련된 k8s 자원도 모두 삭제가 된다.
helm delete my-nginx --keep-history
단, 위와 같이 릴리즈 변경 내역은 남겨두고 싶다면 위와 같이 옵션을 붙여주면 되고, 남아 있는 내역을 통해서 다시 롤백할 수도 있다.