관리 메뉴

피터의 개발이야기

[kubernetes] Helm이란 본문

Kubernetes/Helm

[kubernetes] Helm이란

기록하는 백앤드개발자 2022. 9. 12. 22:53
반응형

ㅁ Helm이란

Helm이란,  kubernetes를 위한 패키지 관리 도구로, yaml 파일의 모음이라고 할 수 있다. apt, yum 툴처럼 플랫폼의 패키지를 관리하듯 kubernetes의 오브젝트들의 구성체인 yaml을 패키지 형태로 관리한다. helm 패키지는 YAML 형식으로 구성되어 있으며, 이것을 chart라고 한다.

 

 

ㅁ Helm을 사용하는 이유

 Infra 자원이 단순한 경우 kubectl 명령어를 통해 개별 오브젝트에 대한 설정과 관리는 충분히 가능하다. 하지만 앱이 증가하고 팀단위로 인프라가 확장될 경우 개별 오브젝트에 대한 YAML을 개별적으로 관리할 경우 파일의 갯수와 코드량의 증가로 관리에 어려움이 발생하게 된다. 그래서 정적인 Template동적인 설정 값(Value)으로 오브젝트를 패키지 형태로 관리해 주는 도구가 필요하게 되었고 HELM이 탄생하였다.

 더 나아가 helm을 이용해 Git처럼 다른 사람들이 잘 만든 애플리케이션을 외부에 오픈하게 되면 누구나 이를  잘 활용하여  손쉽게 쿠버네티스 환경으로 구축할 수 있게 된다. 도커가 단순히 서버 단위 이미지를 외부에서 사용할 수 있게 해준것이라면, 쿠버네티스에서는 helm을 이용해 서버(Pod)와 네트워크(Service), 저장소(PersistentVolume) 등 필요한 모든 자원들의 구성을 외부에서 가져올 수 있게 한 것이다. 

 

헬름을 통하여, 사용자는 다음과 같은 것들을 할 수 있다.

  • 설치하여 사용할만한 패키징된 소프트웨어(차트) 찾기
  • 자신만의 패키지를 쉽게 만들고 호스팅
  • 모든 쿠버네티스 클러스터에 패키지 설치
  • 클러스터에 질의하여 설치되어 실행중인 패키지 확인
  • 설치된 패키지의 이력을 업데이트, 삭제, 롤백 및 조회

헬름을 사용하면 쿠버네티스 사용자가 운영 수준의 워크로드를 더 쉽게 생성, 공유, 실행할 수 있도록 돕는다.

 

 

ㅁ Helm v3과 v1, v2와의 관계 

 ㅇ Helm v1

  - 2015. 11   DEIS의 내부 프로젝트로 시작하였다. 첫번째 KubeCon 에서 헬름 첫 번째 버전이 출시되었다. macOS 소프트웨어 인스톨러 Homebrew에서 모델링된 헬름 1 (팀에서는 "헬름 클래식" 이라고 한다)은 개별 개발자가 쿠버네티스 리소스 패키지를 만들고 클러스터에 배포할 수 있도록 설계되었다.

 

ㅇ Helm v2

 - 2016. 1    Deis 의 코어 헬름 팀은 구글, Skippbox, Bitnami 에 합류. 정교한 애플리케이션을 설치하려는 쿠버네티스 사용자들의 참여로 급성장한 커뮤니티의 요구를 충족시키기 위해 설계된 도구가 탄생.

 - 2018        2.0 ~ 2.15.0까지 고도화됨. 2.15.0 릴리스 발표에서 헬름 2의 향후 계획에 대한 세부사항을 공유.

 

ㅇ Helm v3

 - 2018. 6    Cloud Native Computing Foudation 프로젝트에 합류됨. Helm v3는 Microsoft, 삼성 SDS, IBM 및 Blood Orange의 구성원을 포함하는 주요 유지관리자들의 공통된 노력이다. 첫 번째 알파 릴리스 이래로, 헬름 3는 여러 시간대(time zone)에 걸쳐 커뮤니티 구성원 37명의 기여가 있었다. 그 결과물은 시시각각 변화하고 진화하며 커뮤니티의 요구를 담아낸 도구이다.

 

 - 2019. 11 릴리즈 발표 

 

 

ㅁ Helm V2와 V3 차이점

Helm v3의 내부 구현은 Helm v2와는 상당히 다르게 변경되었다. 가장 눈에 띄는 변화는 틸러(Tiller)가 제거된 것이다. 여러가지 보안 문제로 V3에서는 더이상 사용되지 않는다. 일부 기능은 헬름 2와 호환되지 않는 방식으로, 더 이상 사용되지 않거나 리팩토링되었다. 

 Helm V2에서 Tiller와 Client는 서로 gRPC로 통신을 했으나, V3부터는 Client에서 바로 API Server로 요청한다.

 

 

 

ㅁ Helm 주요개념 Chart, Repository, Release 이해

 Helm을 사용하기에 앞서, Chart, Repository, Release 개념을 알아야 한다.


Chart는 Helm의 리소스 패키지로 쿠버네티스 클러스터에서 구동되는 애플리케이션이 기동되기 위한 모든 리소스를 포함하도 있다.
Repository는 Chart들의 저장소로, Chart들을 모아두는 공유공간이다.

Release는 쿠버네티스 클러스터에서 구동되는 차트 인스턴스이다. Chart는 여러 번 설치되고 새로운 인스턴스는 Release로 관리된다.

 

전체적인 구축 과정은 설치를 원하는 Helm Chart를 Repository에서 검색 후 설치하며, 설치된 Chart 인스턴스를 Release로 관리된다.

 

 

ㅁ Helm chart의 구조

 

 ㅇ helm chart의 구조는 크게 values.yaml과 template로 구성된다.

  - template: 
     Deployment, Service, ConfigMap 등과 같은 쿠버네티스 오브젝트의 YAML들로 구성된다.

     위의 그림처럼 정적으로 유지되는 yaml 파일에 동적으로 수정되어저야 할 부분을 {{동적렌더링값}}으로 구성되어 있다.

 - values: template의 정적 yaml 파일들의 설정값은 values를 통해 동적으로 채워진다.

 

 ㅇ template는 패키지를 구성하는 정적인 뼈대를 이루며
     value는 자주 바뀌거나 사용자마다 달라지는 설정값과 같은 동적인 부분으로 구성된다.

 

 

ㅁ Helm Remote Repository 연결

 helm은 잘 구축된 템플릿을 원격 리파지토리를 이용하여 손쉽게 가져올 수 있다는 강점이 있다. 쿠버네티스 생태계에서 잘 짜여진 템플릿을 사용하여 원하는 환경을 구축할 수 있다. 

 

# stable 원격 저장소 추가
helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories

# bitnami 원격저장소 추가
$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

# 원격 저장소 목록조회
$ helm repo list
NAME   	URL
stable 	https://charts.helm.sh/stable
bitnami	https://charts.bitnami.com/bitnami

# 원격 저장소 redmine 정보조회
$ helm search repo redmine
NAME           	CHART VERSION	APP VERSION	DESCRIPTION
bitnami/redmine	20.3.3       	5.0.2      	Redmine is an open source management applicatio...
stable/redmine 	14.1.12      	4.1.0      	DEPRECATED A flexible project management web ap...

 

ㅁ Helm 차트를 검색하는 사이트, artifacthub

 ㅇ helm chart를 검색할 수 있는 사이트이다. 

 ㅇ 단, 이 사이트는 chart 저장소는 아니다.

 

 

  ㅇ pinpoint를 검색해 보았다.

 

 

 ㅇ pinpoint chart의 설명과 설치 방법을 확인 할 수 있다.

 

 

ㅁ 설치 실습

 ㅇ 구체적인 설치 실습은 다음 글에서 확인 할 수 있다.

 

 

ㅁ 함께 보면 좋은 사이트

 

[컨테이너] 핵심만 콕! 쿠버네티스(1) - helm 패키지 매니저

헬름 개념 설명 "What is Helm?" - https://www.youtube.com/watch?v=fy8SHvNZGeE 원문 출처 "핵심만 콕! 쿠버네티스" 8장 - https://book.naver.com/bookdb/book_detail.nhn?bid=16682923 쿠버네티스 위에서 동작..

12bme.tistory.com

 

 

Helm 3.0.0 출시!

헬름 - 쿠버네티스 패키지 매니저

helm.sh

 

 

퀵스타트 가이드

배포판, FAQ, 플러그인의 설명을 포함한 헬름 설치 및 시작 방법

helm.sh

 

[Kubernetes] Helm이란? Helm의 개요와 사용법

📌Index Helm이란? Helm 설치하기 Helm 사용법 Helm 실습 ✔️ Helm이란? Helm이란, Kubernetes 패키지 관리를 도와주는 것(패키지매니저)으로, yaml 파일의 모음이라고 할 수 있다. Helm에 대한 많은 문서나 책

nayoungs.tistory.com

 

반응형
Comments