helm 사용 방법 정리(작성중)

Helm을 사용하는 과정중 필요에 따라 기록 하고 있습니다. 필요에따라 업데이트 되는 글 내용으로 완성된 글이 아닙니다.

Helm 이란?

Helm은 Kubernetes 애플리케이션의 배포, 관리, 업그레이드 및 설정을 간소화하기 위해 사용되는 패키지 관리 도구입니다. Helm은 Kubernetes 환경에서 애플리케이션 배포를 효율적이고 일관되게 수행할 수 있도록 도와줍니다.

주요 기능

  1. 패키지화된 애플리케이션 배포:
    • Helm 패키지는 “차트(chart)”라고 불리며, 애플리케이션 및 서비스에 대한 Kubernetes 매니페스트 파일(Deployment, Service, ConfigMap 등)을 포함합니다.
  2. 템플릿 기반 설정 관리:
    • Helm은 YAML 템플릿 엔진을 사용하여 동일한 차트를 여러 환경에서 다른 설정 값으로 재사용할 수 있게 합니다.
  3. 애플리케이션 업그레이드 및 롤백:
    • 애플리케이션을 간단히 업그레이드하거나, 문제가 발생한 경우 이전 상태로 롤백할 수 있습니다.
  4. 차트 저장소 관리:
    • Helm 차트는 퍼블릭 또는 프라이빗 저장소에서 관리할 수 있습니다. 예를 들어, 공식 Helm 차트 저장소 외에도 사용자 정의 저장소를 생성하여 관리 가능합니다.
  5. 이력 관리:
    • 배포 이력을 기록하고 필요시 특정 배포 버전으로 되돌릴 수 있습니다.

구성 요소

  • Helm CLI: 사용자 인터페이스로, 명령어를 통해 차트를 설치하거나 관리.
  • 차트(Chart): Kubernetes 리소스를 정의한 패키지.
  • 릴리즈(Release): 특정 차트를 사용하여 생성된 배포 인스턴스.

사용 사례

  1. 복잡한 애플리케이션 배포:
    • 데이터베이스, 웹 애플리케이션, 백엔드 서비스 등 여러 컴포넌트를 포함하는 애플리케이션의 배포를 간소화.
  2. 환경 간 설정 관리:
    • 개발, 스테이징, 프로덕션 환경에 대해 동일한 차트를 재사용하되 설정만 다르게 적용.
  3. DevOps 및 CI/CD 파이프라인 통합:
    • Helm을 CI/CD 파이프라인과 통합하여 배포 자동화 구현.

기본 명령어 예시

  1. 차트 검색:bash코드 복사helm search hub nginx
  2. 차트 설치:bash코드 복사helm install my-release bitnami/nginx
  3. 설치된 릴리즈 확인:bash코드 복사helm list
  4. 릴리즈 업그레이드:bash코드 복사helm upgrade my-release bitnami/nginx --set image.tag=1.19.10
  5. 릴리즈 삭제:bash코드 복사helm uninstall my-release

Helm 설치

gpg키 다운로드

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null

소스리스트 추가

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

관련 패키지 및 Helm설치

apt update
sudo apt-get install apt-transport-https helm -y

버전 확인

helm version

Helm 자동완성기능 추가(Bash)

https://helm.sh/ko/docs/helm/helm_completion_bash

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


Helm Chart를 Yaml 템플릿으로 추출 하는 방법

FluentBit예시

helm repo add fluent https://fluent.github.io/helm-charts
# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

Helm repo리스트를 확인하여 등록된 repo리시트를 확인합니다.

helm repo list
helm search repo fluent
# helm search repo prometheus-community

Helm Chart를 다운 받는다.

helm pull fluent/fluent-bit --untar
# helm pull prometheus-community/prometheus --untar
# helm pull prometheus-community/prometheus --version 25.0.0 --untar

yaml 템플릿 추출

다운받은 helm cart로 경로를 변경한뒤 추출한다.

helm template fluent-bit . --namespace logging > fluent-bit.yaml
# helm template prometheus . --namespace monitoring > prometheus-manifests.yaml

Reference

https://helm.sh/ko/docs/intro/install


Demo 실습

https://artifacthub.io