Quickstart Helm
- 1 Terms
- 2 How to install
- 2.1 Install Snap
- 2.2 Install Helm
- 3 Using Helm
- 3.1 Using Helm Repo
- 3.1.1 Find a package
- 3.1.2 Add into the repo.
- 3.1.3 Search Chart
- 3.2 Install Chart
- 3.2.1 Basic install Chart
- 3.2.2 Install Customized Chart
- 3.2.2.1 Using with --set 옵션
- 3.2.2.2 Using with --values(or -f) 옵션
- 3.2.2.3 Via Download Chart package
- 3.3 Uninstall Chart
- 3.1 Using Helm Repo
실제 k8s를 설치하고 사용하면, 생각보다 k8s의 리소스들을 관리하는 것이 복잡하였고 자연스레 아래 불편한 점들을 발견했다.
리소스 변경이 언제 적용되었는지 확인하기 힘들다.
리소스(Yaml) 파일이 많아 설치 과정이 번거롭다. 또한 유지 관리하기 힘들다.
환경별 리소스 파일을 분리하며 코드 중복이 생겼다.
등 아무튼 번거로움이 많이 있다.
이를 해결하기 위한 방법으로 Helm을 많이 사용하나 보다.
일단 먼저 사용 방법을 익히고, 어떻게 사용하는 것이 good practice인지 알아가 보려고 한다.
Terms
Chart는 Helm 패키지이다. 이 패키지에는 k8s 클러스터 내에서 애플리게이션, 도구, 서비스를 구동하는데 필요한 모들 리소스 정의가 포함되어 있다. k8s에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 같은 것으로 생각할 수 있다.
Repo는 차트를 모아두고 공유하는 장소이다. 이것은 마치 Perl의 CPAN 아카이브나 페도라 패키지 데이터베이스와 같은데, k8s 패키지용이라고 보면 된다.
Release는 k8s 클러스터에서 구동되는 chart의 인스턴스이다. 일반적으로 하나의 차트는 동일한 클러스터 내에 여러 번 설치될 수 있다. 설치될 때마다, 새로운 release 가 생성된다.
MySQL 차트의 경우를 생각해보자. 클러스터 내에 데이터베이스 2대를 구동하려면, 차트를 두 번 설치하면 된다. 차례로 각각의 _release name_을 가지는, 각각의 _release_를 가지게 될 것이다.
이러한 개념을 염두에 두고, Helm 설명을 이어간다.
Helm은 k8s 내부에 _charts_를 설치하고, 각 설치에 대해 새로운 _release_를 생성한다. 새로운 chart를 찾기 위해 Helm chart _repositories_를 검색할 수 있다.
모든 SW가 그렇듯, Helm도 버전에 따라 차이가 있는데, 이 글에서 사용하는 v3과 version1,2의 아키텍처 상으로 가장 큰 차이는 더 이상 Tiller server가 필요하지 않고, Helm 클라이언트 만으로 chart 배포 관리를 할 수 있다는 점이다.
$ helm version
version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}
How to install
Helm은 k8s 용 소프트웨어를 검색하거나, 공유하고 사용하기 위한 K8s Package Manager이며,
Helm을 설치하는 방법은 아래 링크와 같이 다양한데,
먼저 여기서는 Linux 환경에서 설치할 것이므로, snap을 사용하여 설치하겠다.
Install Snap
자세한 내용은 위 링크를 참고하고, 아래와 같이 설치/세팅 한다.
With the EPEL repository added to your CentOS installation, simply install the snapd package:
$ sudo yum install snapd
Once installed, the systemd unit that manages the main snap communication socket needs to be enabled:
$ sudo systemctl enable --now snapd.socket
To enable classic snap support, enter the following to create a symbolic link between /var/lib/snapd/snap
and /snap
:
Install Helm
Snapcrafters 커뮤니티는 Helm 패키지의 Snap 버전을 유지 보수한다.
“Helm이 준비되면, chart repository를 추가할 수 있다. 처음에 주로 사용하는 곳은 공식 Helm stable 차트들이다”
라고 해서, 위 Repository add 하고, helm search repo stable
명령으로 조회해보면, 아래와 같이 죄다 DEPRECATED
라고 나온다.
해서, 원하는 application package 버전의 Chart를 찾아서 repo add 하여 사용한다.
다음 섹션에서 자세히 다루기로 한다.
Using Helm
Using Helm Repo
Find a package
이 전 섹션에서 다룬 것처럼, 기본 stable repo는 DEPRECATED 된 chart가 많아서, 최신 버전 혹은 원하는 버전을 찾기 어렵다.
원하는 application의 chart를 찾기 위해서는 여러 방법이 있는데,
여기에서는 Helm에서 공식 관리하는 Artifact Hub를 사용하여 원하는 chart를 가진 repo를 등록해보자.
Artifact Hub: https://artifacthub.io/
위 사이트에 접속하여 influxdb를 검색해보자.
아래와 같이 결과 화면이 출력 될 것이다.
helm search hub influxdb -o yaml
명령을 사용하여 원하는 chart 버전과 url을 찾으면, 별도 검색 없이 url을 통해 아래 페이지로 바로 들어갈 수 있다.
원하는 버전의 repo를 아래와 같이 복사한다.
이 외에도 자사 제품의 손쉬운 배포 관리를 지원하기 위해,
대부분의 경우, 각 application provider가 직접 chart repo를 노출한다.
예, https://github.com/influxdata/helm-charts
또한, https://github.com/helm/monocular 도 많이 사용한다. → 현재 deprecated 됨.
Add into the repo.
Search Chart
아래와 같이 localhost에 등록된 모든 repo에서 influxdb chart를 찾는다.
Install Chart
Basic install Chart
기본적인 chart 설치 명령은 다음과 같다.
Install Customized Chart
대부분의 경우 선호하는 구성을 사용하기 위해 차트를 커스터마이징 하게 될 것이다.
차트에 어떤 옵션이 구성 가능한지 보려면, helm show values
를 사용한다.
Using with --set
옵션
위에서 type: LoadBalancer
를 NodePort
로 변경하길 원한다면, 아래와 같이 설정할 수 있다.
(namespace
지정하지 않으면 default namespace
로 지정된다.)
Using with --values(or -f)
옵션
--set
과 --values(or -f)
를 지정하는 자세한 가이드는 Helm 공식 가이드(링크)를 참고하도록 한다.
Via Download Chart package
위 섹션들에서와 같이 설치를 원하는 chart의 내용을 조회 후, --set
등을 통해 설치할 수도 있지만, helm pull
명령을 통해 chart package를 다운로드 후 직접 수정하여 설치할 수도 있다.
위에 압축 해제된 파일들 중 원하는(보통의 경우 values.yaml이 될 것이다) 파일을 수정하여, 아래 명령으로 설치하면 된다.
Uninstall Chart
Helm Release 확인
Uninstall a certain Release