Helm이란?
- Helm은 쿠버네티스(Kubernetes) 애플리케이션의 패키지 관리 도구
- 복잡한 쿠버네티스 애플리케이션을 쉽게 설치, 업그레이드, 관리할 수 있도록 도와주며, 쿠버네티스 환경에서의 소프트웨어 배포를 간소화할 수 있게 도와줌
Helm 사용 이유
- 복잡한 쿠버네티스 애플리케이션 관리 단순화
- 쿠버네티스 다양한 리소스(Pod, Service, Deployment 등)를 개별적으로 관리하는 것은 매우 복잡 → Helm을 통해 리소스들을 차트(Chart)라는 하나의 패키지로 묶어 관리함으로써 배포 및 관리를 단순화
- 수많은 컴포넌트로 구성된 마이크로서비스 아키텍처의 애플리케이션을 관리할 때 Helm이 매우 효율적
- 일관된 배포 및 재사용성 확보
- Helm 차트는 재사용이 가능하므로 동일한 애플리케이션을 여러 환경(개발, 스테이징, 프로덕션)에 일관되게 배포 가능
- Helm 저장소(Repository)를 통해 다른 사람들과 차트를 공유 → 애플리케이션 배포를 표준화하고 생산성 증가
- 간편한 애플리케이션 업데이트 및 롤백
- Helm은 애플리케이션의 버전 관리를 지원하므로 업데이트 및 롤백을 쉽게 수행 가능
- 애플리케이션 배포 과정에서 발생할 수 있는 오류를 최소화하고 안정성을 높일 수 있음
- 설정 관리의 효율성 향상
- Helm은 values.yaml 파일을 통해 애플리케이션의 설정을 분리하여 관리할 수 있도록 지원
- 환경별로 다른 설정을 적용해야 하는 경우에도 유연하게 대처 가능
- 자동화된 배포 파이프라인 구축 용이
- Helm은 CI/CD(Continuous Integration/Continuous Delivery) 파이프라인과 통합하여 자동화된 애플리케이션 배포를 구축하는 데 유용
- 애플리케이션 배포 과정을 자동화하고 배포 빈도를 높일 수 있음
Helm 3가지 주요 개념
1. Chart
- helm의 리소스 패키지로 k8s cluster에서 애플리케이션을 기동하기 위해 필요한 모든 리소스가 포함
- Chart 구성 요소
1. Chart.yaml : 차트의 이름, 버전 등 기본적인 메타 정보를 정의
2. templates : kubernets에 배포될 리소스들의 manifest 탬플릿들을 포함 → 오브젝트들의 yaml 파일 포함 디렉토리
3. charts : dependency가 있는 chart 파일들의 저장 디렉토리
4. values.yaml : 템플릿에 사용될 변수(value) 값들을 정의
.
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
2. repository
- 차트를 모아두고 공유하는 장소
- docker hub와 같은 공간
3. release
- k8s cluster에서 구동되는 Chart 인스턴스
- 일반적으로 동일한 Chart를 여러 번 설치할 수 있고 이는 새로운 Release로 관리
- Release될 때 패키지된 차트와 Config가 결합되어 정상 실행
※k8s cluster 내부에 Helm Chart를 원하는 Repository에서 검색 후 설치 → 각 설치에 따른 새로운 Release 생성 순서로 진행
Helm 다운로드
최신 버전을 설치 방법
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
특정 버전 수동 다운로드 후 설치 방법
헬름 다양한 OS들을 위한 바이너리 릴리스를 제공 : https://github.com/helm/helm/releases
- https://github.com/helm/helm/releases에서 원하는 헬름 버전 다운로드
- 압축해제 (tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
- 압축해제된 디렉토리에서 helm 파일을 찾아서, 원하는 목적지로 이동 (mv linux-amd64/helm /usr/local/bin/helm)
다운로드 후 헬름 버전 확인
$ helm version
version.BuildInfo{Version:"v3.19.0", GitCommit:"3d8990f0836691f0229297773f3524598f46bda6",
GitTreeState:"clean", GoVersion:"go1.24.7"}
Helm 다운로드 가이드 : https://helm.sh/ko/docs/intro/install/
헬름 설치하기
헬름 설치하고 작동하는 방법 배우기.
helm.sh