kubernetes 클러스터 환경에서 나만의 Helm Chart를 이용해 서비스를 배포하고자 한다.
Helm Chart를 직접 작성 후 패키징하여 배포해보자.
Helm Chart 생성
배포할 Helm Chart를 생성한다.
helm create <CHART_NAME>
# 예시
helm create passwd_test
Chart는 현재 위치한 디렉터리에 Chart 이름과 같은 경로로 생성된다.
디렉터리 구조는 아래와 같다.
chart_name/
Chart.yaml # 차트에 대한 정보를 가진 YAML 파일
LICENSE # 옵션: 차트의 라이센스 정보를 가진 텍스트 파일
README.md # 옵션: README 파일
values.yaml # 차트에 대한 기본 환경설정 값들
values.schema.json # 옵션: values.yaml 파일의 구조를 제약하는 JSON 파일
charts/ # 이 차트에 종속된 차트들을 포함하는 디렉터리
crds/ # 커스텀 자원에 대한 정의
templates/ # values와 결합될 때, 유효한 쿠버네티스 manifest 파일들이 생성될 템플릿들의 디렉터리
templates/NOTES.txt # 옵션: 간단한 사용법을 포함하는 텍스트 파일
각 설정 파일을 적절하게 수정한다.
Helm Chart 검사
작성한 Chart에 문법적인 오류가 없는지 확인한다.
helm lint /your/chart/path
# 예시
helm lint ~/passwd_test
Helm Chart Manifest 확인
작성한 Chart의 template과 values.yaml을 참조하여 배포된 manifest를 확인한다.
helm template /your/chart/path
# 예시
helm template ~/passwd_test
Helm Chart 설치 확인
작성한 Chart가 정상적으로 설치되는지 확인한다.
helm install <RELEASE_NAME> /your/chart/path
# 예시
helm install chart-test ~/passwd_chart
Helm Chart 패키징
작성한 Chart를 배포할 수 있도록 패키징 한다.
helm package /path/your/chart
# 예시
helm package ~/passwd_test
helm package 명령을 실행하면, 패키징 한 chart가 저장된 경로를 확인할 수 있다.
패키징 된 파일명은 Chart.yaml에 설정된 chart이름과 버전에 의해 결정된다.
패키징 한 chart는 원하는 저장소에 적절히 업로드한다.
💡 패키징한 Chart가 3MB를 초과하는 경우, Error: create: failed to create: Request entity too large: limit is 3145728가 발생하면서 Chart 설치에 실패한다.
따라서 패키지 내에 불필요한 파일이 추가되지 않도록 해야 한다.
Helm Chart Repository 추가
저장소에서 Chart를 내려받을 수 있도록 저장소를 추가한다.
# 저장소 추가
helm repo add <REPOSITORY_NAME> <REPOSITORY_URL>
# 저장소 목록 확인
helm repo list
# 예시
helm repo add passwd_chart http://repo.example.com/passwd_chart
추가한 저장소 정보는 ~/.config/helm/repositories.yaml에 저장된다.
apiVersion: ""
generated: "0001-01-01T00:00:00Z"
repositories:
- caFile: ""
certFile: ""
keyFile: ""
name: <REPOSITORY_NAME>
password: ""
url: <REPOSITORY_URL>
username: ""
Helm Chart Repository 업데이트
추가한 저장소 정보를 업데이트한 후, 저장소에 업로드된 Chart를 확인한다.
helm repo update
helm search repo <KEYWORD>
passwd_chart 레포지터리에 passwd_test가 존재하는 것을 확인할 수 있다.
Helm Chart 설치 확인
배포한 Chart가 정상적으로 설치되는지 확인한다.
helm install <RELEASE_NAME> <REPOSITORY/CHART>
# 예시
helm install -f ~/passwd_test/values.yaml chart-test passwd_chart/passwd_test
참고 문서
https://helm.sh/ko/docs/topics/charts/