Fall in IT.

Helm 간단히 알아보기(Kubernetes) 본문

기타

Helm 간단히 알아보기(Kubernetes)

D.Y 2021. 6. 24. 15:12

helm

  • 쿠버네티스 패키지 매니저
  • node.js의 npm과 같은 쿠버네티스용 패키지 매니지먼트 도구
  • 헬름을 통한 쿠버네티스 어플리케이션 관리
  • 헬름 차트는 복잡한 쿠버네티스 애플리케이션도 편리하게 정의하여 설치하거나 업그레이드 할 수 있다.

 

헬름 특징

  1. 복잡성 관리
  2. 쉬운 업데이트
  3. 간단한 공유
  4. 롤백

 

헬름 허브에 공개된 수많은 헬름 저장소의 차트들을 활용하여 쿠버네티스용 소프트웨어를 공유하고 사용할 수 있다.

 

helm의 일반적인 개념

일반적으로 하나의 소프트웨어를 쿠버네티스에 배포하려면 간단하게 컨테이너만을 배포해서는 사용하기 어려운 경우가 많다. 외부로 IP를 노출시키기 위해서 쿠버네티스 서비스를 배포해야하고, 쿠버네티스 pod를 관리할 deployment가 필요하며, 디스크 볼륨과 기타 정책 등 부가적인 부분을 추가로 배포해야한다.

 

이미 네트워크나 디스크 설정이 완료된 상태에서 애플리케이션을 업데이트 하는 경우에는 쿠버네티스 deployment나 다른 배포 도구를 이용해도 되지만, 처음부터 모든 것을 설치해야하는 반복적인 작업이 있는 경우에는 배포 도구로는 불가능하다.

 

그래서 helm은 어플리케이션 컨테이너 배포는 물론이고, 이에 필요한 쿠버네티스 리소스를 모두 배포해주는 역할을 하는데 이 배포를 패키지 형태로 한다.

 

helm 구성도

helm을 통해서 인스톨하는 패키지를 Chart 라고 한다. Chart는 템플릿으로 설치하고자 하는 쿠버네티스 리소스의 설치 스크립트가 된다.

 

 

퀵스타트 가이드

 

전제조건

  • 쿠버네티스 클러스터
  • 설치를 위해 어떤 보안 구성을 사용할 것인지 결정하기
  • 헬름 설치 및 구성

 

헬름 설치

  • brew install helm

 

helm 명령어

// 헬름 차트 저장소 초기화

$ helm repo add stable https://charts.helm.sh/stable

 

// 헬름 차트 목록 조회

$ helm search repo stable

 

// 저장소 업데이트

$ helm repo update

 

// mysql 설치

$ helm install stable/mysql --generate-name

-> Released smiling-penguin

 

// mysql 차트에 대한 간단한 정보 확인

$ helm show chart stable/mysql

 

// 자세한 정보 확인

$ helm show all stable/mysql

 

// 헬름을 사용하여 릴리즈된 내용 확인

$ helm ls

 

// 릴리즈 설치 제거

$ helm uninstall smiling-penguin

-> Removed smiling-penguin

 

// 릴리즈 이름을 사용하여 상태 추적

$ helm status [release name]

 

 

헬름 사용하기

 

쿠버네티스 클러스터에서 패키지를 관리하는 헬름 사용시의 기본사항을 설명한다.

 

 

주요개념 3가지

  1. 차트는 헬름 패키지이다.
  2. 이 패키지는 쿠버네티스 클러스터 내에서 애플리케이션, 도구, 서비스를 구동하는데 필요한 모든 리소스 정의가 포함되어 있다.
  3. helm repository 는 차트를 모아두고 공유하는 장소이다.
  4. Release는 쿠버네티스 클러스터에서 구동되는 차트의 인스턴스이다.
  5. 일반적으로 하나의 차트는 동일한 클러스터내에서 여러번 설치될 수 있다.

 

즉, 헬름은 쿠버네티스 내부에 charts를 사용하여 릴리즈 인스턴스를 생성한다.

새로운 차트를 찾기 위해서는 helm chart repository를 검색할 수 있다.

 

 

차트 찾기

헬름은 강력한 검색 명령어를 제공한다. 서로 다른 2가지 소스 유형을 검색하는데 사용할 수 있다.

  • $ helm search hub
  • 여러 저장소들에 있는 헬름 차트들을 포괄하는 헬름 허브를 검색한다.
  • $ helm search repo
  • repo는 helm repo add를 사용하여 로컬 헬름 클라이언트에 추가된 저장소들을 검색한다. 검색은 로컬 데이터 상에서 이루어지며, 퍼블릭 네트워크 접속이 필요하지 않다.

 

// 헬름 허브에서 공개적으로 사용가능한 fluentd 차트를 검색

$ helm search hub fluentd

 

패키지 설치

새 패키지를 설치하려면 helm install 명령어를 사용하면 된다.

간단하게 사용자가 지정한 릴리즈 이름, 설치하려는 차트 이름 2개의 인수를 받는다.

 

// fluentd란 이름으로 릴리즈이름 지정하고, stable/fluentd 차트를 사용하여 패키지를 설치

$ helm install fluentd stable/fluentd

 

// 패키지 삭제

$ helm uninstall fluentd

 

설치 전 차트 커스터마이징

차트를 필요에 맞게 커스터마이징하여 사용할 수 있다.

 

// 차트에 어떤 옵션이 있는지 확인

$ helm show values stable/fluentd

 

릴리즈 업그레이드 및 실패 복구

새로운 버전의 차트가 릴리즈되었을때, 또는 릴리즈의 구성을 변경하고자 할때, helm upgrade 명령어를 사용할 수 있다.

 

// upgrade

$ helm upagrade -f panda.yaml happy-panda stable/mariadb

 

// rollback - 이전 버전으로 돌아간다

$ helm rollback happy-panda 1

 

helm repo 저장소 작업하기

// 어떤 저장소들이 설정되어 있는지 확인 가능

$ helm repo list

 

// 새 저장소들 추가 가능

$ helm repo add bitnami https://charts.bitnami.com/bitnami

 

// 차트 저장소는 자주 바뀌므로 자주 업데이트를 해줘야한다.

$ helm repo update

 

// 저장소 삭제

$ helm repo remove

 

내 차트 만들기

// 기본 chart 툴 생성

$ helm create deis-workflow

-> Creating deis-workflow

 

// 차트 문법 검사

$ helm lint

 

// 배포용 차트로 패키징

$ helm package

 

 

참조

Comments