Kubernetes

[helm] Chart 생성/배포

비번변경 2022. 6. 2. 20:05

kubernetes 클러스터 환경에서 나만의 Helm Chart를 이용해 서비스를 배포하고자 한다.

Helm Chart를 직접 작성 후 패키징하여 배포해보자.

 

 

Helm Chart 생성

배포할 Helm Chart를 생성한다.

helm create <CHART_NAME>

# 예시
helm create passwd_test

helm create

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 lint

 

 

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

작성한 chart 확인

 

 

Helm Chart 패키징

작성한 Chart를 배포할 수 있도록 패키징 한다.

helm package /path/your/chart

# 예시
helm package ~/passwd_test

helm package

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

helm repo add

추가한 저장소 정보는 ~/.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>

helm repo update

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

배포한 Chart 확인

 

 

 

참고 문서

https://helm.sh/ko/docs/topics/charts/

https://github.com/helm/helm/issues/7264

https://happycloud-lee.tistory.com/5