쿠버네티스(kubernetes)와 가까워지기 - Helm 이란?
Helm이란?
Helm은 공식 홈페이지에도 정의가 나와있는 것 처럼 'Kubernetes 패키지 관리'를 도와줍니다. 흔히 패키지 관리를 도와주는 Node.js의 npm과 Python의 pip와 같은 역할이라고 보면 됩니다.
Helm을 사용하기에 앞서 우선, 3가지 주요 개념을 꼭 알아야 됩니다.
1. Chart(차트)
헬름 패키지로, k8s cluster에서 애플리케이션이 기동되기 위해 필요한 모든 리소스들이 포함되어 있습니다.
아래 이미지와 같이 mariadb를 기동하기 위해 필요한 리소스인 Deployment, Secret, Service가 생성되는 것을 볼 수 있으며, mariadb가 설치되면서 새로운 Release가 만들어지게 됩니다.
2. Repository(저장소)
차트 저장소로, 차트를 모아두고 공유하는 장소입니다.
3. Release(릴리즈)
k8s cluster에서 구동되는 차트 인스턴스입니다. 일반적으로 동일한 Chart를 여러 번 설치할 수 있고 이는 새로운 Release로 관리되게 됩니다. Release될 때 패키지된 차트와 Config가 결합되어 정상 실행되게 됩니다.
아래 순서와 같이 연계된다고 보시면 됩니다.
k8s cluster 내부에 Helm Chart를 원하는 Repository에서 검색 후 설치 ▶ 각 설치에 따른 새로운 Release 생성
자세한 설명보다는 아래의 공식 홈페이지에 있는 영상을 참고하시면 이해에 보다 큰 도움이 되실 듯 합니다.
https://www.youtube.com/watch?v=Zzwq9FmZdsU&t=2s
Helm v3
Helm은 v2에서 v3로 변하면서 아키텍처적와 개념이 많이 바뀌었습니다. 개발자 입장에서는 사용 편의성이 보다 개선되었고요.
기존에 helm v2를 쓰시던 분이라면 아래 글을 통해 어떤 점이 바뀌었는지 미리 확인하면 좋을 것 같습니다.
주요 내용은 'Helm Server부분이였던 tiller부분이 삭제되었다'라는 점입니다.
Helm 사용해보기 (with Prometheus, Grafana)
자, 그러면 지금부터 본격적으로 Helm을 사용해 볼까요?
각자 Client 환경에 맞게 Helm을 설치해주시면 됩니다.
Mac User라면 아래와 같이 brew를 통해 설치하시면 됩니다.
brew install helm
빌드된 바이너리 파일로 설치할 수도 있고 다양한 방법이 있지만, '스크립트'를 통한 설치를 소개드립니다.
아래와 같이 실행하고자하는 위치에서 명령어를 기반으로 스크립트를 실행시키면 됩니다.
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
그리고 아래와 같이 '$ helm version' 명령어를 통해 helm v3가 정상적으로 설치된 걸 보실 수 있습니다.
저는 레포를 추가하다 보니 아래와 같은 오류 메시지가 나와서 찾아보니, 제가 아래 추가한 사진처럼 Helm Stable Repository의 주소가 아래와 같이 새롭게 바뀌었으니, 참고해주세요~
1. Stable이라는 이름으로 Repository 를 추가해줍니다.
$ helm repo add stable https://charts.helm.sh/stable
$ helm search repo stable
2. 해당 Stable Repo 내에 prometheus가 있는지 확인한 뒤 '$ helm install [RELEASE_NAME] [HELM_CHART]' 양식으로 chart를 설치해 줍니다. '$ helm ls'를 통해 아래와 같이 정상적으로 릴리즈된 걸 확인하실 수 있습니다.
$ helm search repo prometheus
$ helm install prometheus-hjh stable/prometheus
마무리
KT의 DX DevOpsSuite 상품 또한 Helm기반으로 개발 환경 설정을 지원하고 있습니다. 사용하시는 분들은 해당 상품을 사용하시면서 Helm이 당장 피부에 와닿지는 않을 것 같습니다. 하지만, 이번 글을 통해서 DevOpsSuite을 통한 개발 환경 이용에 대해 보다 큰 이해를 얻게 되실 것이라 기대합니다.