이 글은 “쿠버테니스 입문 - 헬름” 책 내용을 정리한 글입니다.

헬름 소개

  • 헬름은 템플릿 파일들의 집합(차트)을 관리하는 쿠버네티스 패키지 매니저 도구이다.
  • 헬름은 차트와 차트 압축 파일을 만들 수 있다. 그리고 차트가 저장된 차트 저장소(Chart Repository)와 연결해 쿠버네티스 클러스터에 차트를 설치하거나 삭제할 수 있다. 헬름 차트들의 배포 주기를 관리할 수도 있다.
  • 헬름을 이용하면 잘 정리된 차트들로 필요한 애플리케이션들을 빠르게 설치할 수 있다.

주요 개념

  • 차트 : 쿠버네티스에서 실행할 애플리케이션을 만드는데 필요한 정보 묶음
  • 컨피그 : 패키지한 차트에 넣어서 배포 가능한 오브젝트를 만들 때 사용할 수 있는 설정이 있다.
  • 릴리즈 : 특정 컨피그를 이용해 실행 중인 차트의 인스턴스이다.

헬름 클라이언트와 틸러 서버

  • 헬름은 커맨드라인 인터페이스인 헬름 클라이언트와 쿠버네티스 클러스터 안에서 헬름 클라이언트의 명령을 받아 쿠버네티스 API와 통신하는 틸러 서버로 구성되어 있다.
  • 헬름 클라이언트를 사용하면 로컬 서버에 차트를 만들고 차트 저장소를 관리할 수 있다.
  • 틸러 서버와 통시하면 쿠버네티스 클러스터에 설치하려는 차트를 보낼 수 있다.
  • 틸러 서버는 주로 헬름 클라이언트의 요청을 처리하려고 대기하거나 요청이 오면 클러스터에 실행할 릴리즈를 만들려고 차트와 설정을 조합하거나, 클러스터에 차트를 설치하거나, 릴리즈를 관리한다.

img

헬름 설치하고 사용하기

# 헬름 클라이언트 설치
$ brew install kubernates-helm

# 쿠버네티스 클러스터에 틸러 서버 설치
$ helm init

# kube-system 네임스페이스 확인 - tiller-deploy-xxxx-xxx 형태로 틸러용 파드가 실행중인 것을 확인할 수 있다.
$ kubectl get pods -n kube-system

# helm 에서 사용할 차트 저장소 정보를 업데이트 한다.
$ helm repo update

# 별도의 차트 저장소를 운영하지 않는다면 stable이라는 차트 저장소가 추가된다. 
# 아래 명령어로 저장소 목록을 확인할 수 있다.
$ helm repo list

# 사용할 수 있는 차트들을 확인한다.
$ helm search

# 차트를 이용해 MYSQL을 설치
# --name 옵션은 차트 이름을 지정한다.
$ helm install stable/mysql --name=my-mysql

# 정상적으로 MYSQL을 설치했다면 MYSQL 관련 파드가 쿠버네티스에 실행되었음을 확인할 수 있다.
$ kubectl get pods

# 현재 실행중인 차트 상태를 확인할 수 있다.
$ helm ls

# 현재 실행중인 차트를 삭제한다.
$ helm del my-mysql

헬름 차트 구조

mysql/
 ㄴ charts/  			# 이 차트와 관련이 있는 차트들을 포함한 디렉터리
 ㄴ templates/			# 쿠버네티스 매니페스트 파일들로 변환될 템플릿을 포함한 디렉터리
 ㄴ Chart.yml			# 차트 정보 파일
 ㄴ LICENSE				# 차트 라이선스 정보 파일
 ㄴ README.md			# 차트 설명 파일
 ㄴ requirements.yaml	# 차트의 의존성을 명시한 파일
 ㄴ values.yaml				# 이 차트에서 사용하는 기본 설정
 ㄴ templates/NOTES.txt	# 짧은 사용법 설명 파일 (옵션)
# 아래 명령으로 기본 구조의 차트를 만들 수 있다.
$ helm create sample

# 디렉터리 구조 확인
$ tree sample

헬름 차트 수정해 사용하기

# mysql 차트 다운로드
$ helm fetch stable/mysql

# 다운로드한 파일은 tgz 확장명의 압축파일이다. 아래 명령으로 파일 압축을 푼다.
$ tar zxvf mysql-1.3.1.tgz

# 차트 내용을 볼 수 있다.
$ tree mysql

# 차트 수정 후 아래 명령어를 이용해서 간단하게 설치
$ helm install ./mysql

# CHART 항목을 확인하면 버전이 변경된 것을 확인할 수 있음
$ helm ls

헬름 차트 저장소를 직접 만들어 사용하기

  • 헬름에서는 차트뮤지엄이라는 오픈 소스 차트 저장소를 제공한다.
  • 차트뮤지엄은 차트 저장소 역할을 하기 떄문에 실행할 때 차트를 저장할 스토리지를 지정해야한다. AWS, S3, 구글 클라우드 스토리지, 애저 Blob 스토리지 등 다양한 클라우드 저장소를 사용할 수 있다.
# 로컬 디스크에 차트를 저장하도록 지정하고 실행한다.
$ chartmuseum --debug --port=8080 --storage="local" --storage-local-rootdir="./chartstorage"

# 현재 저장된 차트를 확인할 수 있다.
$ curl http://localhost:8080/api/charts

# mysql 차트를 패키지한다.
$ helm package mysql

# 아래 명령을 실행해 차트뮤지엄에 차트를 등록할 수 있다.
$ curl --data-binary "@mysql-0.1.0.tgz" http://localhost:8080/api/charts

# 아래 명령으로 헬름 차트 저장소를 추가한다.
$ helm repo add chartmuseum http://localhost:8080

# 아래 명령어로 차트 저장소가 제대로 등록됐는지 확인한다.
$ helm search chartmuseum

$ helm install chartmuseum/mysql