helm은 chart라고 불리는 쿠버네티스 패키지를 관리하는 도구이다. 리눅스에서 패키지를 관리하기 위해 패키지 관리 도구인 yum, dnf, apt 를 사용하 듯이 쿠버네티스에서도 패키지를 관리하기 위해 helm 을 사용할 수 있다.
쿠버네티스에서 helm 을 사용하지 않고도 애플리케이션을 배포나 관리할 수 있지만 하나의 애플리케이션을 동작시키기 위해 배포된 여러 리소스를 관리하기에는 번거로움이 있다. helm은 애플리케이션 배포, 업데이트, 롤백을 간편하게 할 수 있도록 돕는다.
helm의 아키텍처를 이해하기 위해서는 아래 세가지 개념을 알아두어야 한다.
Chart 쿠버네티스 애플리케이션을 설치하기 위해 필요한 파일들을 모아둔 설치 패키지이다. 예를 들어, 어떤 앱을 설치할지, 어떤 리소스를 만들지 등의 정보가 들어있다.
Config: Chart 안에 있는 기본 설정값을 사용자 환경에 맞게 바꾸는 설정 파일이다. 예를 들어, 앱을 몇 개 실행할지, 어떤 이름을 쓸지 등을 여기서 정할 수 있다.
Release: Chart + Config가 실제로 쿠버네티스에 설치되어 실제로 돌아가고 있는 앱 인스턴스이다. 같은 Chart를 여러 번 설치하면, 서로 다른 설정으로 여러 개의 Release를 만들 수 있다.
한마디로 정리하자면,
Chart는 설치 도구,
Config는 맞춤 설정,
Release는 실제로 설치돼서 돌아가는 결과물이다.
Helm는 Client와 Library로 역할을 분리되어 있다.
그림으로 구성 요소간 관계를 살펴보자면 아래와 같다.
