Helm에 대하여- Kubernetes Helm Chart Repositories | Part 1

양승현·2023년 9월 2일
1

kubernetes

목록 보기
3/18
post-thumbnail

Helm이란

  • 쿠버네티스 패키지 매니저
    - https://helm.sh./docs/
    - 공식 Docs site
  • kubernetes 환경에서 pod, service, 컨피그맵, 시크릿,PV/PVC 등을 하나하나 설치하는 방법이 아닌 일종의 패키지 형식으로 간단히 설치하는 방법을 제공한다.
  • 마치 Cent OS에서 패키지를 쉽게 dnf 혹은 yum을 이용하여 배포하는 것과 비슷한 원리이다.
  • Helm 기능
    - 새로운 차트 생성 (기존에 있는 chart 사용 및 새롭게 files를 구성하여 새로운 chart 생성 가능)
    • chart로 chart archive(tgz) files로 패키지화 하기
    • chart가 저장되는 chart 저장소와 상호작용
    • kubernetes cluster에 chart의 설치 및 제거, 릴리즈 주기 관리

helm 구성

  • Chart
    - helm Package이며 kubernetes application, tool, service를 구동하는데 필요한 resource의 집합(MariaDB, Nginx, Redis etc)
  • Repository
    - bitnami(https://bitnami.com/stacks)
  • 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

helm 설치하기

설치 가이드

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 하위 명령어

  • 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 생성

helm 사용하기

  • 설치하기
$ 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

0개의 댓글