helm이란?
•
쿠버네티스 애플리케이션을 패키지 형태로 손쉽게 관리할 수 있도록 도와주는 도구이다.
•
yaml 은 정적 파일이기 때문에 리소스별로 yaml파일을 만들어야하는데 리소스가 많아질 경우 yaml 파일에 대한 유지보수가 힘들어진다.
•
helm은 하나의 템플릿을 통해 yaml 파일을 동적으로 생성해준다.
•
helm 패키지 또한 yaml 형식으로 구성되어 있으며, 이것을 helm-chart라고 한다.
•
차트를 모아두고 공유하는 장소를 Repository(저장소)라고 한다.
•
helm chart 구조
helm chart의 구조는 크게 `templates` 디렉토리와 `values.yaml`로 구성된다.
•
templates: 설치할 리소스 파일들이 존재하는 디렉토리이다. 해당 디렉토리 안에는 Deployment, Service 등과 같은 쿠버네티스 리소스가 yaml 파일 형태로 들어가 있다. 각 파일들의 설정값은 비워져 있고(placeholder) values.yaml의 설정값들로 채워진다.
•
values.yaml: 각 인프라 설정에 따라서 세부적으로 사용자가 원하는 값들을 설정하는 파일이다.
하나의 차트로 여러 환경에 쉽게 배포가 가능하다.
•
위 그림과 같이 같은 nginx 서버라도 운영과 개발을 나누거나 웹서버로 사용하거나 프록시 섯버로 사용하기도 한다.
•
이 때 nginx template은 상황에 따라 변하지 않는 공통 부분이기 때문에 template은 하나로 사용하고 구성에 따라 다른 values.yaml 파일을 사용하여 여러 어플리케이션을 생성할 수 있다.
Helm 구조
helm 버전 2와 버전 3의 주요 차이점은 Tiller가 없어졌다는 점이다.
•
Tiller와 Client는 서로 gRPC로 통신했으나 버전 3부터는 Client에서 바로 API Server로 요청한다.
•
또한 Chart를 설치하는 RBAC권한은 사용자가 사용한 kubeconfig를 활용하는 방식으로 수정되었다.