이미지 버전, 디스크 용량, 애플리케이션 관리자 비밀번호 등 쿠버네티스 환경에서 애플리케이션은 환경에 따라 다른 값을 가질 수 있다.
Helm은 아래와 같은 방식을 통해 하나의 패키지로 여러 환경을 구성할 수 있도록 한다.
- 값을 변수로 취급할 수 있도록 파일을 템플릿으로 변환한다.
- 변수는 중괄호로 감싸서 나타내며, 값을 식별할 변수명을 적는다. 값은 values.yaml에 저장된다.
즉, 템플릿과 values.yaml이 결합한 것이 쿠버네티스가 클러스터에 애플리케이션을 배포하는 데 사용하는 정의 파일에 해당한다.
helm chart
template + values.yaml + Chart.yaml
Chart.yaml에는 차트의 이름, 버전, 설명과 같은 차트와 관련된 정보들이 저장되어 있다.
사용자는 helm chart를 직접 생성하거나, 저장소(https://artifacthub.io/)에 공개된 chart를 사용할 수 있다.
명령어
hub에서 chart 검색
helm search hub <NAME>
다른 저장소 추가
helm repo add <REPO_NAME> <URL>
추가한 저장소(클라이언트 저장소)에서 chart 검색
helm search repo <PACKAGE_NAME>
클라이언트 저장소 확인
helm repo list
chart 다운로드
--untar 옵션을 사용하면 차트를 로컬로 다운로드한 후 압축을 해제한다. 압축이 해제된 경로는 chart 이름과 같으며, 디렉터리 내 values.yaml을 편집하여 설치에 사용할 수 있다.
helm pull --untar <CHART_NAME>
Helm Release
chart가 설치된 버전을 뜻하며, 동일한 chart로 동일한 애플리케이션을 중복하여 설치할 수 있다. release이름은 chart 설치 시 지정할 수 있으며, 설치 명령을 실행할 때마다 release가 생성된다.
즉, release는 서로 독립적이다.
chart 설치
helm install <RELEASE_NAME> <CHART_NAME>
# 지정한 디렉터리 내 파일로 설치
helm install <RELEASE_NAME> <DIR>
설치 목록 확인
helm list
release 삭제
helm uninstall <RELEASE_NAME>
참고 문서
https://coffeewhale.com/kubernetes/gitops/helm/2020/05/13/helm-operator/