Helm

Helm이란?

Helm이란 쿠버네티스용 패키지 매니저로서 yaml 파일의 모음이라고 할 수 있다.

helm install -f myvalues.yaml myredis ./redis

명령어 필요한 쿠버네티스 리소스를 한 번에 설치 가능하다.

Helm 도입 배경

  • Kubectl 명령을 통해 App(yaml 파일) 생성 및 배포
  • 각각의 App마다 yaml 파일 생성
  • 각각의 배포 환경마다 yaml 파일 생성
  • yaml 파일은 정적 파일이기 떄문에 리소스별로 yaml 파일을 만들어야 함
  • 수 많은 리소스를 관라리하게 될 때 yaml 파일에 대한 유지보수가 어려움
  • 하나의 Template을 통해 yaml 파일을 동적으로 생성하게 해주는 Tool인 Helm이 등장하게 됨

Helm 구조

Helm 컴포넌트

  • Helm CLI: 외부의 요청 수행
  • Helm Library: CLI를 통해 들어온 요청 수행
  • 개발 언어: Golang
  • 데이터베이스: kubernetes secret

Helm Chart

  • 쿠버네티스 어플리케이션을 만들기 위한 모든 정보를 묶어 놓은 단위
  • ex) nginx chart, mariadb chart 등

Helm Chart Repository

  • 원격 저장소
    ex) ArtifactHUB, bitnami 등
  • 로컬 저장소
    ex) Chartmuseum 등

Helm 설치

공식 다운로드 링크: https://helm.sh/ko/docs/intro/install/

릴리즈별 다운로드

리눅스 amd64

curl -O https://get.helm.sh/helm-v3.9.4-linux-amd64.tar.gz
tar -zxvf helm-v3.9.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

다른 OS 링크 확인: https://github.com/helm/helm/releases/

키워드 자동 완성 등록

helm completion bash > /etc/bash_completion.d/helm 

버전 확인 명령어

helm version

쿠버네티스 config 파일 확인

cd ~/.kube/

만약 microk8s를 사용해서 config 파일이 없을 경우

microk8s.kubectl config view --raw > ~/.kube/config

차트 레포지토리 등록

Artifact Hub 링크: https://artifacthub.io/

위 링크에서 패키지 조회 및 설치 가이드 확인

레포지토리 등록

helm repo add bitnami https://charts.bitnami.com/bitnami

레포지토리 조회

helm repo list

Chart 조회

helm search repo bitnami | grep tomcat

레포지토리 업데이트

helm repo update

레포지토리 삭제

helm repo remove bitnami

Tomcat 배포

helm install my-tomcat bitnami/tomcat --version 10.4.3 --set persistence.enabled=false,tomcatAllowRemoteManagement=1

노트 포트 확인 및 접속

kubectl get svc my-tomcat

배포 리스트 조회

helm list

배포 상태확인

helm status my-tomcat

Tomcat 삭제

helm uninstall my-tomcat

Pod 확인

kubectl get pods

Tomcat Chart 다운 및 배포

다운로드

helm pull bitnami/tomcat --version 7.1.2

압축풀기

tar -xf ./tomcat-7.1.2.tgz

Tomcat 배포

helm install my-tomcat . -f values.yaml

NodePort 확인 및 접속

kubectl get svc my-tomcat
http://<ip 주소>:<nodeport>/

[참조]: 인프런 - 대세는 쿠버네티스 [Helm편]

끝!