내 차트 만들기1
내장 객체, 변수 주입 우선순위, 사용자 정의 변수
1. Helm 명령어
1-1) Chart Template 생성
helm create mychart
1-2) Show 명령
helm show values .
helm show chart .
helm show readme .
helm show all .
vi README.md
# Title
## Introduction
This is README.md
1-3) Template 명령
helm template mychart .
1-4) Chart 배포
helm install mychart .
1-5) Get 명령
helm get manifest mychart
helm get notes mychart
helm get values mychart
helm get all mychart
helm get values 비교
helm uninstall mychart
helm install mychart . -f values.yaml
helm install mychart . --set replicaCount=3
2. 내장 객체
2-1) configmap 추가
vi cm-object.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: built-in-object
data:
.Release: ______________________________________
.Release.Name: {{ .Release.Name }}
.Release.Namespace: {{ .Release.Namespace }}
.Release.IsUpgrade: "{{ .Release.IsUpgrade }}"
.Release.IsInstall: "{{ .Release.IsInstall }}"
.Release.Revision: "{{ .Release.Revision }}"
.Release.Service: {{ .Release.Service }}
.Values: ______________________________________
.Values.replicaCount: "{{ .Values.replicaCount }}"
.Values.image.repository: {{ .Values.image.repository }}
.Values.image.pullPolicy: {{ .Values.image.pullPolicy }}
.Values.service.type: {{ .Values.service.type }}
.Values.service.port: "{{ .Values.service.port }}"
.Chart: ______________________________________
.Chart.Name: {{ .Chart.Name }}
.Chart.Description: {{ .Chart.Description }}
.Chart.Type: {{ .Chart.Type }}
.Chart.Version: {{ .Chart.Version }}
.Chart.AppVersion: {{ .Chart.AppVersion }}
.Template: ______________________________________
.Template.BasePath: {{ .Template.BasePath }}
.Template.Name: {{ .Template.Name }}
templates 폴더 안에 불필요한 파일 삭제
rm -rf deployment.yaml hpa.yaml ingress.yaml serviceaccount.yaml tests
install 배포
helm install mychart . -n default
helm get manifest mychart
helm upgrade mychart . -n default
3. 변수 주입 우선순위
3-1) configmap 추가
vi cm-values.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: values-yaml
data:
env: {{ .Values.configMapData.env }}
log: {{ .Values.configMapData.log }}
path: "{{ .Values.configMapData.path }}"
3-2) values.yaml에 해당 속성 추가
configMapData:
env: dev
log: debug
path: "/data"
3-3) 확인
helm template mychart .
3-4) Prod용 values_prod.yaml 파일 추가
vi values_prod.yaml
configMapData:
env: prod
log: info
3-5) -f 옵션 적용
helm template mychart . -f ./values_prod.yaml
3-6) -f 옵션 적용, –set 옵션 적용
helm template mychart . -f ./values_prod.yaml --set configMapData.log=debug
4. 사용자 정의 변수
_helpers.tpl 파일
{{/*
Expand the name of the chart.
*/}}
{{- define "mychart.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
{{ include "mychart.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
service.yaml 파일
apiVersion: v1
kind: Service
metadata:
name: {{ include "mychart.fullname" . }}
labels:
{{- include "mychart.labels" . | nindent 4 }}
helm template mychart .
Referenece
Helm
- 차트 템플릿에 관한 빠른 가이드 : https://helm.sh/docs/chart_template_guide/getting_started/
- 내장 객체 : https://helm.sh/docs/chart_template_guide/builtin_objects/
- 변수주입과 우선순위 : https://helm.sh/docs/chart_template_guide/values_files/
- 사용자 정의 변수 : https://helm.sh/docs/chart_template_guide/named_templates/
- Helm 생성시 명명규칙 : https://helm.sh/docs/chart_best_practices/conventions/
Others
- Markdown 가이드 : https://www.markdownguide.org/basic-syntax/
- GoDoc 패키지 템플릿 : https://godoc.org/text/template
- Sprig 함수 : https://masterminds.github.io/sprig/