devops

쿠버네티스의 Helm 간단 정리 본문

DevOps/Kubernetes

쿠버네티스의 Helm 간단 정리

vata500 2022. 9. 14. 18:02
반응형

Helm은 쿠버네티스의 service, deployment, configmap과 같은 다양한 오브젝트들을 결합해주는 쿠버네티스용 패키지라고 보면 된다. Helm은 애플리케이션 컨테이너 배포는 물론이고, 이에 필요한 쿠버네티스 리소스를 모두 배포해주는 역할이라고 보면된다.

왜 굳이 Helm을 사용해야할 까?

Deployment 히스토리 기능 제공

Helm에서 배포된 어플리케이션은 Helm release로 관리가 된다. 릴리즈된 버전 기록을 자동으로 유지 관리하고 배포 후에 문제 발생시 롤백하는 것이 간편하다.

CI/CD 파이프라인 가능

CI/CD 파이프라인을 이용해서 배포 작업을 구성하고 자동화할 수 있다.

멀티스테이징

배포 중에 어플리케이션 구성이 가능하다. 쉽게 말해서, 스테이킹 운영환경에 따라서 Pod의 복제본의 수와 PV의 용량을 다르게 설정해야하는데 이 때 동일한 Helm 차트로 만들어 모든 환경에서 사용가능하다.


Helm 구성

 

helm은 client-server 구조로 설계되어 있다. 사용자를 위한 CLI인 client를 helm client라 하며, server는 tiler라고 한다. (tiller는 대부분 k8s위에 파드로 배포된다)

어플리케이션을 구성할 kubernetes 객체를 구성하는 매니페스트 템플릿 파일을 'chart'라고 부른다. helm client에서 chart를 k8s위에 배포하게 되면 배포된 어플리케이션을 'release'라고 부른다.

간단히 요약하자면,

  • client : 사용자의 CLI client
  • tiller : helm server로 k8s 위에 파드로 존재
  • chart : 어플리케이션을 구성하는 k8s 설정 묶음
  • release : k8s 위에 배포된 어플리케이션

client와 tiller는 gRPC 프로토콜을 이용해서 통신한다. 사용자는 helm install 명령어를 입력하면 client가 chart를 tiller에게 보내고, tiller는 받은 chart를 렌더링하여 k8s 객체 정보를 정의하는 manifest 파일을 만든다. 이 파일을 가지고 k8s API server와 통신하여 배포한다.

https://k21academy.com/docker-kubernetes/helm-and-helm-charts-with-kubernetes/


1) helm 설치

$ curl https //raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
bash -s -- --version v3.2.2

2) chart 생성 및 확인

$ helm create <CHART_NAME>
$ ls <CHART_NAME>
Chart.yaml   charts   templates   values.yaml
  • Chart.yaml : chart 이름, 버전 정보 등을 담고 있다.
  • charts : chart 속에 다른 chart를 넣을 수 있다.
  • templates : chart의 뼈대가 되는 k8s 리소스가 선언된 폴더
  • values.yaml : 사용자가 정의한 설정값 

3) chart 설치

$ helm install <CHART_NAME> <CHART_PATH>

라이브러리 종속성이 컨테이너 안에서 해결되기 때문에 helm은 실제 사용할 프로세스만 생성한다.

4) chart 리스트 확인

$ helm list

5) chart 배포 상태 확인

$ helm status <CHART_NAME>

6) char 삭제

$ helm delete <CHART_NAME>

 

반응형
Comments