- Kubernetes 어플리케이션을 관리하기 위한 패키지 매니저 - Kubernetes 클러스터에 쉽게 어플리케이션을 설치, 업그레이드, 롤백 가능 - 패키지로서 Chart를 사용하며, 각 Chart에는 Kubernetes에 해당 어플리케이션을 설치하기 위한 템플릿과 설정이 포함
Helm 기본 개념
Chart
- 쿠버네티스에 어플리케이션을 실행시키기 위한 리소스 패키지
Chart 구성 요소 • Chart.yaml - 차트의 메타데이터 정보(차트명, 버전, 작성자 등) • values.yaml - templates에 있는 yaml에 필요한 환경 변수 설정 • templates - 쿠버네티스에 어플리케이션 실행을 위한 yaml 템플릿 모음(deployment, service 등)
Repository
- 차트를 저장하고 공유하는 로컬이나 클라우드 등 저장소
Release
- 쿠버네티스에 구동되는 차트의 인스턴스 - 동일한 Chart를 여러번 설치할 수 있고 설치할 때 마다 새로운 릴리즈 생성
Helm 설치
스크립트 설치
## 스크립트 생성
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh
## 실행권한 부여
chmod 700 get_helm.sh
## 스크립트 실행
./get_helm.sh
## 버전 정보 출력
helm version
## 간략하게 버전 정보만 출력
helm version --short
자동완성 기능 적용
## 현재 세션에서 Bash 셸에 Helm의 자동 완성 기능을 활성화
source <(helm completion bash)
## ~/.bashrc 파일에 해당 명령어를 추가
echo "source <(helm completion bash)" >> ~/.bashrc
## 쉘 재활성화
exec bash
Helm Repository 추가
Repository 추가
## Repository 추가
helm repo add bitnami https://charts.bitnami.com/bitnami
## Repository 리스트 확인
helm repo list
## Repository 업데이트
helm repo update
## 특정 차트 검색
helm search repo nginx
## 허브에서 차트 검색
helm search hub nginx
자주 쓰이는 저장소 정보 • Helm Hub - Helm 공식 레포지토리인 Helm Hub는 다양한 Helm 차트를 찾고 배포할 수 있는 중앙 집중식 플랫폼 • Bitnami - Bitnami는 인기 있는 오픈 소스 애플리케이션에 대한 Helm 차트를 제공 • Stable Charts - Helm의 공식 GitHub 저장소인 Stable Charts는 인기 있는 오픈 소스 소프트웨어의 Helm 차트를 제공 • Kubernetes Charts - Kubernetes 공식 GitHub 저장소에서 호스팅되는 이 차트 저장소는 Kubernetes 애플리케이션 및 구성 요소를 배포하기 위한 Helm 차트를 제공
Chart 설치
## 차트 검색
helm search repo mysql
## 차트 설치
helm install mysql bitnami/mysql
## 자동으로 차트 이름 부여
helm install bitnami/mysql --generate-name
## 릴리즈 리스트 확인
helm list
## 릴리즈 상태 확인
helm status mysql
## 릴리즈 삭제
helm uninstall mysql
Helm Chart 설정 수정
values.yaml 저장
## 패키지의 values.yaml 저장
helm show values bitnami/mysql > mysql.yaml
## 수정한 values.yaml 적용
helm install mysql bitnami/mysql -f mysql.yaml
yaml 오버라이딩 설정 적용
## yaml 파일 생성
vi test.yaml
## test.yaml
primary:
service:
type: NodePort
## test.yaml 설정 적용
helm install mysql bitnami/mysql -f test.yaml
set 오버라이딩 설정 적용
## set 설정 적용
helm install mysql bitnami/mysql --set "primary.service.type=NodePort"
Helm Release 설정 수정
upgrade로 Release 설정 수정
## 실행중인 release yaml 설정 적용
helm upgrade mysql bitnami/mysql -f test.yaml
## 실행중인 release set 설정 적용
helm upgrade mysql bitnami/mysql --set "primary.service.type=NodePort"
## 변경 확인
helm list
- REVISION : Helm 자체 버전 관리 번호 - 설정 적용 후 REVISiON이 2로 증가
## REVISiON 버전 1 상태로 롤백
helm rollback mysql 1
## 변경 확인
helm list
- 롤백 후 REVISiON이 3으로 증가 되었지만 Kubernetes 상태는 REVISiON 1의 설정 값으로 변경