- 쿠버네티스 패키지 매니저
- https://helm.sh./docs/
- 공식 Docs site
- https://bitnami.com/stacks
- kubernetes에서 지원하는 chart 저장소(helm 명령어로 package 사용 가능)
- kubernetes 환경에서 pod, service, 컨피그맵, 시크릿,PV/PVC 등을 하나하나 설치하는 방법이 아닌 일종의 패키지 형식으로 간단히 설치하는 방법을 제공한다.
- 마치 Cent OS에서 패키지를 쉽게 dnf 혹은 yum을 이용하여 배포하는 것과 비슷한 원리이다.
- Helm 기능
- 새로운 차트 생성 (기존에 있는 chart 사용 및 새롭게 files를 구성하여 새로운 chart 생성 가능)
- chart로 chart archive(tgz) files로 패키지화 하기
- chart가 저장되는 chart 저장소와 상호작용
- kubernetes cluster에 chart의 설치 및 제거, 릴리즈 주기 관리
- Chart
- helm Package이며 kubernetes application, tool, service를 구동하는데 필요한 resource의 집합(MariaDB, Nginx, Redis etc)- Repository
- bitnami(https://bitnami.com/stacks)
- https://bitnami.com/stacks/helm
- Bitnami는 virtual appliance 및 web application, Software packages for development stack 및 install library
- Repository 추가
$ helm repo [add | remove | list] [NAME] [URL] EX) # yang library 추가 $ helm repo add yang https://yangseunghyun.com/library # repository list 확인 $ helm repo list # library 삭제 $ helm repo remove yang
설치 가이드
https://helm.sh/ko/docs/intro/install/
운영체제 별 설치 메뉴얼 지원 1
- binary 설치
운영체제 별 설치 메뉴얼 지원 2
- helm의 모든 release는 다양한 os들의 binary release를 제공하고 있으니 수동으로 다운로드하여 설치 가능하다.
- 원하는 버전 다운로드
https://github.com/helm/helm/releases# 압축해제 $ tar -zxvf helm-v3.0.0-linux-amd64.tar.gz # 압축해제후 helm binary로 이동 $ mv linux-amd64/helm /usr/local/bin/helm
운영체제 별 설치 메뉴얼 지원 3
- script 설치(helm 최신 버전을 자동으로 가져와 local에 설치하는 installer script를 제공)
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 # 최신버전 다운로드 필요시 아래 명령어 사용 $ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash $ chmod 700 get_helm.sh $ ./get_helm.sh
- package manager로 설치
- Homebrew(Mac OS)
$ brew install helm
- Chocolatey(window)
$ choco install kubernetes-helm
- apt(debian/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
- dnf/yum(fedora)
$ sudo dnf install helm
- snap
$ sudo snap install helm --classic
- helm search -------| Helm Hub 및 Helm Repositories에서 chart search
- helm install --------| Kubenetes에 chart install
- helm list -----------| 주어진 Kubernetes namespace의 모든 release 나열
- helm show ---------| chart에 대한 정보 출력
- helm upgrade ------| release를 기본 chart의 새 버전으로 upgrade
- helm pull -----------| Helm Hub or Helm repository에서 chart download 및 extraction
- helm repo ----------| chart repository add, index, list, remove, update
- helm repo add - 차트 저장소 추가
- helm repo index - 패키지 된 차트를 포함하는 디렉터리에 인덱스 파일 생성
- helm repo list - 차트 저장소 나열
- helm repo remove - 하나 이상의 차트 저장소 제거
- helm repo update - 차트 저장소에서 로컬로 사용 가능한 차트 정보 업데이트
- helm package-tgz ---| 현재 폴더에 chart archive 생성
- 설치하기
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh
- install 후 helm 설치 확인
$ helm --version
- Subcommand 적용
# 명령어 사용시 Tab키 사용시 자동완성 $ source <(helm completion bash) $ echo "source <(helm completion bash)" >> ~/.bashrc
- helm repo list 등록하기
$ helm repo add bitnami https://charts.bitnami.com/bitnami
- helm repo list 확인
$ helm repo list
- 등록된 repository(bitnami)에 등록된 chart의 모든 package 목록 보기
$ helm search repo # nginx package search $ helm search repo nginx
- chart 정보 보기
# helm show chart [CHART] # helm inpect values [CHART] # Chart.yaml 파일의 내용과 chart의 세부정보 출력 $ helm show chart bitnami/nginx # kubernetes 관점에서 yaml 형식으로 출력된다. $ helm inpect values bitnami/nginx # bitnami/nginx가 지원하는 패키지의 value를 yaml 형식으로 상세 정보 출력 $ helm inpect values bitnami/nginx > nginx_value.yaml # yaml 형식 파일로 저장하여 확인 $ cat nginx_value.yaml
- chart archive install
# helm install [chart_name] [CHART] # chart를 설치하고 설치된 패키지 운영 요약 메세지 출력 $ helm install yang bitnami/nginx # value 설정 변경하고 패키지 실행 $ helm install yang --set service.type=NodePort bitnami/nginx # yaml 파일을 적용하여 패키지 실행 $ helm install yang -f nginx_value.yaml bitnami/nginx # helm으로 배포한 현재 chart 정보 확인(update or rollback 가능) $ helm list # 배포된 모든 pod 혹은 service 확인 가능 $ kubectl get all
- chart archive uninstall
# helm uninstall [chart_name] # chart를 설치하고 설치된 패키지 운영 요약 메세지 출력 $ helm uninstall yang
- helm package 구조 확인하기
# package download $ helm pull bitnami/nginx # 설치하게 되면 해당 위치에 파일 생성된다. $ ls nginx.tgz # 압축 해제 $ tar -zxvf nginx.tgz # tree 명령으로 확인 # 마지막 줄에 조회된 디렉토리와 파일의 총 개수를 출력하여 확인 # tree -d [디렉터리] 디렉터리만 확인 # tree -f [디렉터리] 디렉터리 전체 경로 표시 $ tree nginx