Kubernetes helm 패키지 매니저에 대해서 알아보자.
쿠버네티스 위에서 동작하는 애플리케이션은 Deployment, Service, ConfigMap 과 같은 다양한 리소스의 조합으로 구성되어 있음.
애플리케이션을 배포할 때, 이러한 리소스들을 개별적으로 생성하지 않고 하나의 패키지로 묶어서 배포하는 것이 일반적.
Kubernetes helm이란?
- helm은 쿠버네티스 패키지 매니저로써 apt, yum, pip 툴과 비슷하다고 생각하면 된다.
- helm을 이용하면 쿠버네티스에 원하는 소프트웨어(패키지)를 손쉽게 설치할 수 있음!
- helm 패키지 또한 YAML 형식으로 구성되어 있으며 이것을 chart라고 부른다.
Kubernetes chart 구조
- values.yaml : 사용자가 원하는 값들을 설정하는 파일
- templates/ : 설치할 리소스 파일드이 존재하는 디렉터리
처음 templates의 각 설정 값들은 비워져 있으며 패키지가 설치되는 시점에 values.yaml에 있는 설정값들이 채워진다.
쿠버네티스 helm을 잘 활용하면 프로세스(Pod)와 네트워크(Service), 저장소(PersistentVolumes) 등 애플리케이션에서 필요한 모든 자원들을 외부로부터 가져올 수 있음
helm 설치
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash -s -- --version v3.2.2
chart 생성
helm create [CHART NAME]
- Chart.yaml : chart 이름, 버전 정보 등 chart의 전반적인 정보
- charts : chart 속에 또 다른 여러 chart들을 넣을 수 있음. 기본적으로는 비어있음.
- templates/ : chart의 뼈대가 되는 쿠버네티스 리소스가 들어있는 폴더
- values.yaml : 사용자가 정의하는 설정값을 가진 YAML 파일
helm chart 설치
먼저 values.yaml 파일의 service.type과 service.port를 수정
- service.type : LoadBalancer
- service.port : 8888
수정 후에 helm chart 설치
helm install [CHART_NAME] [CHART_PATH]
service를 조회해보자.
EXTERNAL-IP 가 생성되었음! 실제로 http://192.168.121.186:8888/ 로 url 입력을 하면 아래와 같은 화면이 뜬다.
** 만약 values.yaml과 templates 안의 템플릿 파일들이 합쳐진 결과 YAML을 확인하고 싶다면 아래의 명령을 통해 .yaml 파일을 따로 빼서 cat 명령어로 확인하면 된다.
helm template [HELM NAME] [CHART_PATH] > [YAML명].yaml
cat [YAML명].yaml
** chart의 values.yaml을 수정하고 싶으면 해당 내용 수정 후에 upgrade를 할 수 있음
helm upgrade [CHART_NAME] [CHART_PATH]
service.type을 LoadBalancer 에서 NodePort로 변경하니 EXTERNAL-IP가 사라진것을 확인할 수 있고 helm list를 조회해보면 REVISION이 2로 업데이트 된걸 확인할 수 있음
chart 관련 helm 명령어
# chart list 조회
helm list -n [NAMESPACE 명]
# chart 배포 상태 확인
helm status [CHART_NAME]
# chart 삭제
helm delete [CHART_NAME]
helm 원격 리파지토리(repository)
- helm에는 chart 원격 저장소인 리파지토리가 있음. 리파지토리에는 여러 chart를 한 곳에 묶어서 보관해놓을 수 있음
- 사용자가 온라인상에 제공되는 리파지토리를 추가하여 원격 저장소로부터 chart를 로컬 클러스터에 설치할 수 있음
[ helm repository 실습해보기 ]
- stable이라는 리파지토리를 추가해보자.
helm repo add stable https://charts.helm.sh/stable
- 추가한 리파지토리의 인덱스 정보를 최신으로 업데이트!
(helm은 리파지토리를 기본적으로 캐싱해서 신규 chart를 설치하기 위해 업데이트 수행)
# 리파지토리 업데이트
helm repo update
# 리파지토리 조회
helm repo list
# 리파지토리 내 chart 조회
helm search repo [REPOSTIORY 명]
엄청많은 stable 리파지토리내의 chart들을 확인해 볼 수 있음..!!!!
아래의 주소에서 stable 리파지토리 외에 다양한 원격 저장소를 조회해볼 수 있음!
** helm 허브 주소 : https://artifacthub.io/
Artifact Hub
Find, install and publish Kubernetes packages
artifacthub.io