Custom Chart 만들기
Chart 생성하기
helm create <chartName> [flags]
Chart.yaml: https://helm.sh/docs/topics/charts/- https://helm.sh/ko/docs/chart_template_guide/builtin_objects/
- https://helm.sh/ko/docs/chart_template_guide/functions_and_pipelines/
_helpers.tpl: https://helm.sh/ko/docs/chart_template_guide/named_templates/
<chartName>/
├── Chart.yaml
├── LICENSE # optional
├── README.md # optional
├── values.yaml
├── values.schema.json # optional
├── charts/
├── crds/ # optional
├── templates/
│ ├── NOTES.txt # optional
│ ├── _helpers.tpl # optional
│ └── ...
└──
hooks 사용하기
References
훅 리소스는 템플릿이 렌더링된 후 특정 이벤트에서만 관리되는 리소스입니다. 따라서 릴리즈로 관리되지 않습니다.
apiVersion: batch/v1
kind: Job
metadata:
annotations:
helm.sh/hook: pre-install,pre-upgrade
helm.sh/hook-weight: "1"
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
helm.sh/hook: <hookType>[,<hookType>...]- 실행 시점을 지정합니다.
<hookType>pre-installpost-installpre-upgradepost-upgradetestpre-rollbackpost-rollbackpre-deletepost-delete
helm.sh/hook-weight: "<weight>"- 동일한 훅 타입 내에서 실행 순서를 결정하기 위한 값입니다.
- 값이 낮을수록 먼저 실행됩니다.
helm.sh/hook-delete-policy: <policyType>[,<policyType>...]- 훅 리소스가 삭제되는 시점을 지정합니다.
<policyType>before-hook-creation- 새로운 훅 리소스가 생성되기 전에 기존 훅 리소스를 삭제합니다.
- 기본값입니다.
hook-succeededhook-failed
Dependency 추가하기
추가하고자 하는 차트의 정보를 <chartPath>/Chart.yaml 파일의 dependencies 항목에 추가합니다.
<chartPath>/Chart.yaml
dependencies:
- name: <name>
version: <version>
repository: <repository>
alias: <name>- 같은 차트를 여러 번 추가하거나 values에서
<name>대신 사용하고싶은 이름을 지정할 때 사용합니다.
- 같은 차트를 여러 번 추가하거나 values에서
repositoryhttps://...file://...oci://...
condition: <key>- 일반적으로
<name>.enabled또는<alias>.enabled을 사용합니다.
- 일반적으로
추가한 차트가 application 타입인 경우 <chartPath>/values.yaml 파일에 <name> 항목을 추가하여 서브차트의 값을 설정할 수 있습니다.
<chartPath>/values.yaml
global: {}
<name>: # <alias>:
enabled: true
# subchart values
helm dependency update [<chartPath>]
update 명령어는 Chart.yaml파일을 바탕으로 charts/ 디렉토리를 업데이트합니다.
helm dependency list [<chartPath>]
helm dependency build [<chartPath>]
build 명령어는 Chart.lock파일을 바탕으로 charts/ 디렉토리를 업데이트합니다.
Chart 패키징
helm package <chartPath> --version <version>
helm pull <repositoryName/chartName> --version <version>
helm pull <chartURL> --version <version>
helm pull --repo <repoURL> <chartName> --version <version>