helm工作笔记二之语法
default 表示默认值,如果没有定义则会被引用
quote 表示加引号。
-表示缩进换行,不然会有空格:
{{- if eq .Values.test "123" }}
test: a
{{- else }}
test: b
{{- end }}
eq 是等于
判断语句只能支持eq
with可以指定变量范围:
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml .| nindent 8 }}
{{- end }}
toYaml是一个函数,指定映射路径并全部取出。
nindent 加n表示加换行,nindent 8 换行后加8个空格。
indent 不加n表示不加换行。
循环
{{- range .Values.test }}
{{ . }}
{{- end }}
定义变量:
在with中引用全局变量:
方法一:
加$:
{{- with .Values.nodeSelector }}
nodeSelector:
app: {{ $.Release.Name }}
方法二:
在with之外做变量赋值:
{{- $releaseName := .Release.Name -}}
{{- with .Values.nodeSelector }}
nodeSelector:
app: {{ $releaseName }}
循环加变量:
在values.yaml中定义:
env:
NODEJS: “Xxx”
SERV: “nodejs”
在 templates/deployment.yaml 中:
env:
{{- range
k
e
y
,
key,
key,value := .Values.env }}
- name: {{ $key }}
value: {{ $value }}
{{- end }}
结果:
- name: NODEJS
value: Xxx
- name: SERV
value: nodejs
命名模板:
[root@node217 test]# cat templates/_helpers.tpl
{{- define “name” -}}
{{ .Chart.Name }}-{{ .Release.Name }}
{{- end -}}
{{- define “labels” -}}
app: {{ template “name” . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
release: {{ .Release.Name }}
{{- end -}}
调用公共模板:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
{{- include “labels” . | nindent 4 }}
name: {{ template “name” . }}
注意这里的template和include的区别,template后面不能跟|函数的,而include可以