프로그래밍

Helm이란?

Jinwookoh 2025. 5. 5. 12:22

 

Helm은 Kubernetes 애플리케이션을 정의하고 설치하며 관리할 수 있는 패키지 관리자입니다. Helm을 사용하면 복잡한 Kubernetes 리소스를 템플릿화하고, 이를 패키지처럼 배포하거나 버전 관리할 수 있습니다. 마치 리눅스에서 apt, yum, brew 등을 사용하는 것처럼 Kubernetes 환경에서 Helm을 사용하는 것이죠.


✅ Helm이란?

Helm은 Kubernetes 애플리케이션을 패키징하고 공유할 수 있도록 도와주는 **“Kubernetes용 패키지 관리자(Package Manager)”**입니다.

  • Helm에서 사용되는 패키지를 Chart라고 부르며, 하나의 Chart에는 Deployment, Service, ConfigMap, Secret 등의 리소스 템플릿이 포함됩니다.
  • Chart는 values.yaml 파일을 통해 값만 바꿔서 재사용 가능합니다.

🚀 Helm 주요 기능

기능 설명

Chart 패키징 여러 Kubernetes 리소스를 하나의 단위로 관리 가능
버전 관리 Chart 및 배포된 리소스를 버전별로 추적
템플릿 엔진 Go 템플릿을 기반으로 한 동적 매니페스트 생성
배포 자동화 helm install 한 번으로 여러 리소스 자동 배포
롤백 기능 이전 배포 버전으로 쉽게 되돌리기 가능
의존성 관리 여러 Chart 간 의존성 관리 지원
리포지토리 지원 ChartHub, ArtifactHub 등 외부 저장소에서 Chart 검색 및 다운로드 가능

🛠 Helm 설치 방법

1. MacOS (Homebrew)

brew install helm

2. Ubuntu/Linux

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

3. Windows (Chocolatey)

choco install kubernetes-helm

📦 Helm 기본 사용법

1. Helm 저장소 추가

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

2. Chart 설치

helm install my-release bitnami/nginx

3. Chart 업그레이드

helm upgrade my-release bitnami/nginx --set service.type=NodePort

4. 설치된 릴리스 확인

helm list

5. 릴리스 삭제

helm uninstall my-release

🧱 Helm Chart 구조

mychart/
├── Chart.yaml        # 메타데이터 (이름, 버전 등)
├── values.yaml       # 사용자 정의 변수 입력 파일
├── charts/           # 의존성 Chart 저장
├── templates/        # Kubernetes 리소스 템플릿
│   ├── deployment.yaml
│   ├── service.yaml
│   └── _helpers.tpl

🔍 Helm vs Kustomize 차이

항목  Helm  Kustomize
접근 방식 템플릿 기반 (Go Template) 패치 기반 (YAML 오버레이)
버전 관리 지원 (릴리즈별 추적) 미지원
복잡한 배포 적합 단순한 오버레이에 적합
의존성 관리 지원 미지원

📝 마무리

Helm은 Kubernetes 리소스를 보다 효율적이고 선언적으로 관리할 수 있게 해주는 도구입니다. 특히 DevOps 환경에서 CI/CD와 연동하여 Helm을 통해 다양한 환경에 손쉽게 배포할 수 있어 Kubernetes 운영 자동화에 필수적인 도구로 자리 잡고 있습니다.