고수준의 이미지 셋을 그룹화 하여 조직화 하는 방법이 어려기 때문에 Helm  매니지 패키징 사용.

  • 복잡도 관리
  • 쉬운 업그레이드
  • 간단한 공유
  • 안전한 롤백


Helm 은 kubernetes에 어플리케이션을 올리고 관리하는 도구 이며

helm은 chart라는 개념으로 어플리케이션을 정의하고 관리한다.

이를 이용해서 클라이언트에서 쉽게 어플리케이션을 kubernetes 위에 배포하고 이렇게 배포된 어플리케이션을 관리한다.

chart란 kubernetes에 올라갈 어플리케이션이 어떤 kubernetes 객체들로 구성되어 있는지,

어떤 설정값들을 사용하는지에 대한 정의가 담긴 정보의 집합이라 할 수 있다.


helm은 client-server 구조로 설계되어 있다.

사용자를 위한 CLI인 client를 helm client라 부르고 server는 tiller라고 부른다.

tiller는 보통kubernetes위에 pod으로 배포된다.

어플리케이션을 구성할 kubernetes 객체를 정의하는 manifest template 파일 및 설정 묶음을 chart라고 부른다.

helm client를 통해서 chart를 kubernetes 위에 배포하면 배포된 어플리케이션을 release라고 부른다.




쿠버네티스 실행시 컨테이너를 구성하고 저정하는 다양한 방법을 제공한다.

여기에는 이미지 셋을 구룹화하는 고수준의 조직이 결여되어있고 이것을 Helm으로 관리한다.

즉, 고수준의 이미지 셋을 그룹화 하여 조직화 하는 방법이 어렵기 때문에 Helm, 쿠버네티스 전용 매니저 패키징을 사용한다.

  • 복잡도 관리
  • 쉬운 업그레이드
  • 간단한 공유
  • 안전한 롤백

Helm은 차트 (Chart) 라는 파일 형식으로 패키징한다.

차트를 통해 애플리케이션 설치, 업그레이드, 롤백을 간편하게 한다.

차트는 복잡한 애플리케이션을 설명하고, 반복 가능한 애플리케이션 설치를 제공하며, 단일 승인 지점으로 사용할 수 있게 한다.

또한 전체 업그레이드와 사용자 정의 처리를 사용해 편리한 업데이트를 가능하게 한다.

클러스터에 설치된 애플리케이션을 관리하는데 필요한 모든 단계를 수행한다.

구성요소

클러스터에서 실행되는 서버 구성요소인 Tiller 와

로컬시스템에서 실행되는 클라이언트 구성요소인 helm으로 구성되어 있다.

Tiller 서버

쿠버네티스 API와 통신하여 Helm 패키지를 관리하는 서비스다.

Tiller 서버는 배포판 관리한다.

Helm 클라이언트 그리고 쿠버네티스 API서버와 상호작용한다.

  • Helm 클라이언트에서 들어오는 요청대기
  • 차트와 설정을 결합, 배포판 빌드
  • 쿠버네티스에 차트 설치
  • 후속 배포판 추적
  • 쿠버네티스와 상호작용해 차트 업그레이드 및 삭제.

Helm 클라이언트

시스템에 heml 클라이언트를 설치하여 클라이언트에서 제어한다.

  • 로컬 차트개발
  • 저장소 관리
  • Tiller 서버와 상호작용
  • 설치할 차트전송
  • 배포판에 대한 정보요청
  • 기존 배포판의 설치 해제 또는 업그레이드 요청.


Helm 클라이언트 설치

Helm 클라이언트의 바이너리 다운로드는 공식 Releases 페이지에서 찾을 수 있다.

# brew install kubernetes-helm.
# choco install kubernetes-helm
Chocolatey v0.10.11
Installing the following packages:
kubernetes-helm
By installing you accept licenses for the packages.
Progress: Downloading kubernetes-helm 2.10.0... 100%
...


Tiller 서버 설치

Tiller 는 일반적으로 클러스터에서 실행된다.

Helm 클라이언트가 설치된 환경에서 Tiller를 설치한다.

또한 아래의 명령으로 클라이언트에서 클러스터 Tiller 서버 초기화를한다.

# helm init
...
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
...


클라이언트에서 Helm 이 설치된 위치의 실행파일 찾기.

설치된 위치의 실행파일을 환경변수 설정하기.

클라이언트에서 helm 명령어 실행하기

이후 helm init 초기화하여 Tiller 서버 설치진행.

# helm init
...
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
...
# kubectl get po --namespace=kube-system -l name=tiller
NAME                             READY     STATUS    RESTARTS   AGE
tiller-deploy-64c9d747bd-q78k5   1/1       Running   0          49s

# helm version
Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}



  • No labels
Write a comment…