Fall in IT.

Kubernetes를 사용하는데 Helm이 필요한 이유와 간단 사용방법 본문

시스템구축

Kubernetes를 사용하는데 Helm이 필요한 이유와 간단 사용방법

D.Y 2023. 2. 6. 14:40

안녕하세요.

오늘은 Kubernetes를 말할때 빠지지않고 등장하는 Helm에 대해서 알아보도록 하겠습니다.

 

Helm이란?

Kubernetes 패키지 매니저 도구

다양한 애플리케이션(tomcat, fluentd 등)을 Kubernetes에 쉽게 배포하도록 도와줌

 

Kubernetes에 애플리케이션을 쉽게 관리(배포, 업데이트) 하도록 도와주는 도구

Helm Flow

Helm은 kubectl과 같이 Kubernetes master 노드의 API Server를 통해 애플리케이션을 배포하고 관리하는 일을 수행한다.

Helm v3부터는 Tiller 서버가 사라졌다.

Helm V2까지는 Kubernetes 환경에 Helm Client(agent)와 연동될 Tiller Server를 설치해야했으나, V3 부터는 Kubernetes API 직접 통신하는 방식으로 변경되었다.

 

Helm이 필요한 이유

첫 번째, helm을 이용하면 Kubernetes에 애플리케이션을 쉽게 배포할 수 있다.

Kubernetes 환경에 하나의 애플리케이션을 배포하기 위해서는 배포할 애플리케이션 정보가 담긴 yaml 파일이 필요하다. (yaml 파일 안에는 여러 Kubernetes 오브젝트의 리소스 정보가 정의되어 있다.)

프로젝트가 커지면서 앱의 종류가 많아지고 배포환경마다 조금씩 다른 yaml 파일이 만들어지게 된다.

 

즉, 서비스가 커질수록 관리해야하는 정적 yaml 파일은 많아지게 되는데 helm을 이용하면 공통으로 사용되는 template을 정의해두고 값만 변경하여 동적으로 애플리케이션이 생성할 수 있다.

 

두 번째, 다양한 오픈소스들을 Kubernetes에 쉽게 배포할 수 있다.

오픈소스를 관리하는 회사들은 (혹은 오픈소스를 이용하고자하는 회사들) Helm Chart를 만들고 Helm Hub에 올려두면 이를 사용하여 Kubernetes에 배포하여 이용할 수 있다.

 

간단 사용 방법

간단하게 Kubernetes 환경에 tomcat 애플리케이션을 배포해보겠습니다. 해당 글에서는 helm을 설치하였다고 가정하고 실습을 진행합니다. 

 

1. Kubernetes Config 정보 확인

helm은 컴퓨터에 설치된 Kubernetes Config 파일 정보를 통해 Kubernetes 클러스에 대한 연결정보를 확인하고 명령을 전달하게 된다.

# 쿠버네티스 Config 정보 확인
$ cd ~/.kube
$ cat config

 

2. Chart repository 등록 및 tomcat 배포

공개된 Chart repository는 https://artifacthub.io/에서 찾아볼 수 있으며, tomcat을 검색하여 repository로 등록한다.

# Bitnami Repository 등록
$ helm repo add bitnami https://charts.bitnami.com/bitnami

# 설치된 Repository 목록 
$ helm repo list

# Repository 삭제
$ helm repo remove bitnami

# Bitnami에서 제공하는 tomcat 설치 (namespace를 지정하지 않았기 때문에 default에 저장된다)
$ helm install my-tomcat bitnami/tomcat --version 10.5.14 --set persistence.enabled=false

3. tomcat 애플리케이션 삭제

# helm으로 배포된 애플리케이션 목록 확인
$ helm list

# 배포한 애플리케이션 상태 확인
$ helm status my-tomcat

# 쿠버네티스에 배포된 애플리케이션 삭제
$ helm uninstall my-tomcat

 

내가 만든 애플리케이션을 배포하고자 할때는 helm chart를 만들어서 사용하면 되는데 차트를 만들때 제공되는 다양한 함수, 파이프라인, 제어 흐름, 지역변수 등 다양한 기능들을 활용하면 내가 원하는 차트를 손쉽게 만들어 낼 수 있습니다. 

 

 

*추가

helm 차트를 직접 만들어서 배포할 수 있다.

# helm chart 생성
$ helm create mychart

# 내가 만든 helm chart 결과 확인
$ helm template mychart . 

# 내가 만든 차트를 통해서 kubernetes에 배포
$ helm install mychart . -f values.yaml

# 배포된 차트 정보 조회
$ helm get manifest mychart

# 네임스페이스가 app인 영역의 mychart 업그레이드
$ helm upgrade mychart . -n app

 

참조

헬름 공식문서, https://helm.sh/

헬름 설치하기, https://helm.sh/ko/docs/intro/install/

쿠버네티스 패키지 레지스트리, https://artifacthub.io/

 

모두 즐거운 코딩하세요~

 

Comments