헬름: 쿠버네티스 패키지 매니저(Helm: package manager for Kubernetes)

개요

헬름을 처음 들었을 때 무엇에 쓰는 제품인지 이해하기가 힘들었습니다. 

가장 큰 이유는 헬름 차트때문이었습니다. 일반적으로 차트라고 하면 도표를 떠 올렸기에 헬름 차트라는 단어만 듣고는 어떤 의미인지 이해하기가 힘들었습니다.

헬름을 이해하기 위해서는 다음 3가지 개념에 대해서 알아두면 쉽게 이해할 수 있습니다.

인용은 Helm | 헬름 사용하기에서 발췌했습니다.


A Chart

차트는 헬름 패키지이다. 이 패키지에는 쿠버네티스 클러스터 내에서 애플리케이션, 도구, 서비스를 구동하는데 필요한 모든 리소스 정의가 포함되어 있다. 쿠버네티스에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 같은 것으로 생각할 수 있다.


차트는 쿠버네티스용 패키지를 의미하며 구동에 필요한 리소스 정보(DB 연결 정보, mail server 정보등)를 모두 담고 있습니다.

A Repository

저장소는 차트를 모아두고 공유하는 장소이다. 이것은 마치 Perl의 CPAN 아카이브 페도라 패키지 데이터베이스와 같은데, 쿠버네티스 패키지용이라고 보면 된다.

헬름 저장소는 java 의 maven central , python의 pypi , PHP 의 Packagist 같은 곳을 생각하면 됩니다.


A Release

릴리스는 쿠버네티스 클러스터에서 구동되는 차트의 인스턴스이다. 일반적으로 하나의 차트는 동일한 클러스터내에 여러 번 설치될 수 있다. 설치될 때마다, 새로운 release 가 생성된다.

MySQL 차트의 경우를 생각해보자. 클러스터 내에 데이터베이스 2대를 구동하려면, 차트를 두번 설치하면 된다. 차례로 각각의 release name 을 가지는, 각각의 release 를 가지게 될 것이다.

이러한 개념을 염두에 두고, 헬름 설명을 이어간다.

헬름은 쿠버네티스 내부에 charts 를 설치하고, 각 설치에 대해 새로운 release 를 생성한다. 새로운 차트를 찾기 위해 헬름 차트 repositories 를 검색할 수 있다.


헬름의 다음 명령어로 헬름 차트를 만들수 있습니다.

$ helm create myapp

Creating myapp


Linux tree 명령을 실행해 보면 헬름 차트의 전체 구조를 파악할 수 있습니다.

$ tree

.
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

3 directories, 10 files


Docker hub 와 차이점

docker 파일의 저장소인 https://hub.docker.com/ 와 helm 의 저장소간 차이점이 궁금할 수 있습니다.

도커 허브는 docker 이미지로 된 app 을 빌드/배포/서비스하는 데 촛점을 맞추고 있으므로 쿠버네테스와 통합보다는 단일 docker app 을 사용할 경우 유용합니다.


헬름 저장소는 쿠버네테스에서 빌드/배포되는 app 을 관리하는 용도이므로 컨테이너 오케스크레이션 도구로 쿠버네테스를 사용할 경우 헬름이 더 적당한 도구라 생각합니다.

같이 보기

Ref