-
[Helm] Helm이란공부/쿠버네티스&헬름 2025. 3. 3. 22:42
Helm이란
Helm은 쿠버네티스(Kubernetes) 애플리케이션의 패키지 관리 도구입니다. 복잡한 쿠버네티스 애플리케이션을 쉽게 설치, 업그레이드, 관리할 수 있도록 도와주며, 쿠버네티스 환경에서의 소프트웨어 배포를 간소화합니다.
왜 Helm을 써야될까
Helm은 쿠버네티스 애플리케이션의 배포와 관리를 단순화하고 효율적으로 만들어주는 강력한 도구이기 때문입니다.
Helm을 사용하지 않고도 쿠버네티스의 배포나 관리가 가능하지만 다음과 같이 번거로움이 있습니다.
구체적으로는 다음과 같습니다.
- 복잡한 쿠버네티스 애플리케이션 관리 단순화
- 쿠버네티스 애플리케이션은 다양한 리소스(Pod, Service, Deployment 등)로 구성되며, 이들을 개별적으로 관리하는 것은 매우 복잡한데 Helm은 이러한 리소스들을 차트(Chart)라는 하나의 패키지로 묶어 관리함으로써 배포 및 관리를 단순화
- 마이크로서비스 아키텍처와 같이 수많은 컴포넌트로 구성된 애플리케이션을 관리할 때 Helm의 장점이 두드러짐
- 일관된 배포 및 재사용성 확보
- Helm 차트는 재사용이 가능하므로 동일한 애플리케이션을 여러 환경(개발, 스테이징, 프로덕션)에 일관되게 배포할 수 있음
- Helm 저장소(Repository)를 통해 다른 사람들과 차트를 공유함으로써 애플리케이션 배포를 표준화하고 생산성을 높일 수 있음
- 간편한 애플리케이션 업데이트 및 롤백
- Helm은 애플리케이션의 버전 관리를 지원하므로 업데이트 및 롤백을 쉽게 수행할 수 있음
- 애플리케이션 배포 과정에서 발생할 수 있는 오류를 최소화하고 안정성을 높일 수 있음
- 설정 관리의 효율성 향상
- Helm은 values.yaml 파일을 통해 애플리케이션의 설정을 분리하여 관리할 수 있도록 지원
- 환경별로 다른 설정을 적용해야 하는 경우에도 유연하게 대처할 수 있음
- 자동화된 배포 파이프라인 구축 용이
- Helm은 CI/CD(Continuous Integration/Continuous Delivery) 파이프라인과 통합하여 자동화된 애플리케이션 배포를 구축하는 데 유용
- 애플리케이션 배포 과정을 자동화하고 배포 빈도를 높일 수 있음
기존 yaml 파일 배포 방식
yaml 파일의 양이 많아짐 → 이름이 변경된다고 하면 일일이 전부 수정해야함 → 관리 포인트가 늘어나게됨
Helm을 사용한 yaml 파일 배포 방식
차트 템플릿을 만들고 실행 옵션만 다르게 주면 됨
Helm 정보
Helm v2 아키텍처 Helm v3 아키텍처 Helm v2는 지원이 끝났으므로 v3를 사용하는 것을 권장합니다.
- v3와 v2의 차이점은 Helm Tiller 여부인데 Helm Tiller는 pod로 v2에서 사용되다가 여러가지 보안 이슈로 인해 v3에서 삭제됨
- Tiler와 client는 서로 gRPC로 통신했으나 v3부터는 client에서 바로 API 서버로 요청
구성
환경
주요 개념
헬름을 사용하기 위해선 3가지 주요 개념을 알아두는 것이 좋습니다.
1. Chart
helm의 리소스 패키지로 k8s cluster에서 애플리케이션을 기동하기 위해 필요한 모든 리소스가 포함되어 있습니다.
. ├── Chart.yaml ├── charts ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ └── tests │ └── test-connection.yaml └── values.yaml
- Chart.yaml : 차트의 이름, 버전등 기본적인 메타 정보를 정의
- templates : kubernets에 배포될 리소스들의 manifest 탬플릿들을 포함
- yaml 오브젝트 파일들이 들어있는 디렉토리
- charts : dependency가 있는 chart 파일들이 해당 디렉토리에 생김
- values.yaml : 템플릿에 사용될 변수(value) 값들을 정의
2. repository
차트를 모아두고 공유하는 장소입니다.
3. release
k8s cluster에서 구동되는 차트 인스턴스입니다.
- 일반적으로 동일한 Chart를 여러 번 설치할 수 있고 이는 새로운 Release로 관리
- Release될 때 패키지된 차트와 Config가 결합되어 정상 실행
k8s cluster 내부에 1.Helm Chart를 원하는 2.Repository에서 검색 후 설치 → 각 설치에 따른 3.새로운 Release 생성 순서로 진행됩니다.
배포