본문 바로가기
Kubernetes/활용

Helm 헬름 활용(1)

by lumination 2024. 2. 19.

쿠버네티스는 리소스가 여러 개 필요한 경우가 많다.

 

  • 파드 노출을 담당하는 서비스(Service)
  • 애플리케이션 설정에 관련된 컨피그맵(ConfigMap)
  • 기밀 정보를 다루는 시크릿(Secret)

 

다양한 리소스를 각각 관리하지 않고 하나의 패키지로 관리하는 도구가 헬름(Helm)이다.

 

주요 구성 요소

  • 헬름 차트(Helm Chart):
    • 여러 리소스의 묶음
    • 헬름 차트 하나로 여러 어플리케이션을 일괄 설치 가능
    • Chart.yaml: 차트에 대한 정보가 담긴 yaml 파일
    • values.yaml: 차트의 기본 템플릿 변수 파일
    • charts/: 차트에 종속된 차트들을 포함하는 디렉터리
    • crds/: 커스텀 자원 정의
    • templates/: values 파일과 같이 유효한 쿠버네티스 매니페스트 파일을 생성하는 템플릿
  • 헬름 리포지토리(Helm Repository)
    • 헬름 차트를 저장하고 공유하는 저장소
    • yum과 유사
    • 많은 솔루션 업체들이 직접 헬름 리포지토리를 제공함
    • ex) ArtifactHub 다양한 헬름 차트 허브 제공
  • 헬름 템플릿(Helm Template)
    • 설치와 관련한 파일들 관리한다.
    • 일정한 형식 또는 포맷을 의미
    • 이름, 날짜 등의 특정 변수만 수정하여 해당 파일을 사용할 수 있다.
    • 여러 템플릿 파일에서 공통으로 사용하는 변수를 단일 values.yaml 파일에서 관리한다.
      해당 파일만 수정하면 전체 템플릿 파일에서 사용하는 변수를 한꺼번에 수정할 수 있다.
    • Ex) favoriteDrink: coffee
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello world"
  drink: {{ .Value.favoriteDrink }}

helm install geared-marsupi ./mychart --dry-run --debug

이렇게 치면 drink에 coffee라는 변수가 들어간 모습을 볼 수 있다.

 

 

헬름 설치

curl -fsSL -o get_heml.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

./get_heml.sh
Downloading https://get.helm.sh/helm-v3.14.1-darwin-arm64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
Password:
helm installed into /usr/local/bin/helm
 nhn@AL01600616  ~  helm version
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/nhn/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/nhn/.kube/config
version.BuildInfo{Version:"v3.13.1", GitCommit:"3547a4b5bf5edb5478ce352e18858d8a552a4110", GitTreeState:"clean", GoVersion:"go1.21.3"}

 

  • helm repo add: 애플리케이션 설치에 사용되는 헬름 리포지토리를 로컬 환경에 추가한다.
  • helm pull: 헬름 차트 파일을 로컬 호스트로 내려받는다.
  • cp values.yaml my-values.yaml: 원본 템플릿 변수 파일의 이력을 관리하기 위해 새 파일로 복사
  • helm install {helm name} -f my-values.yaml: 애플리케이션 설치
  • helm ls: 헬름 차트 목록 확인
  • helm get manifest: 주로 디버깅 용도로 사용하며, 현재 실행 중인 헬름 차트의 전체 yaml 파일 목록 및 상세 설정을 확인할 수 있다.
  • helm upgrade: 기존 헬름 차트의 변수 등을 수정해서 재배포한다.
  • helm delete: 헬름 차트를 삭제한다.