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 운영 자동화에 필수적인 도구로 자리 잡고 있습니다.
'프로그래밍' 카테고리의 다른 글
tar xvzf 명령 (0) | 2025.05.05 |
---|---|
배포 전략(Deployment Strategy) (0) | 2025.05.05 |
Redis 자료구조 완벽 정리: Strings, Lists, Sets, Hashes, Sorted Sets (0) | 2025.05.05 |
Kubernetes Service Domain 구조 완벽 가이드 (0) | 2025.05.05 |
CoreDNS란? 쿠버네티스 DNS의 핵심을 이해하자 (0) | 2025.05.05 |