Helm 或許不是現在最新最流行的工具,但公司用這個,所以還是得知道怎麼寫,這邊整理一些撰寫中一些實用小技巧。因為他底層是用 go template,有些語法會跟 Go 很像
-
使用 name template 來降低 template 的雜亂度
1
2
3{{- define "temp.name" }}
...
{{end -}} -
使用不會輸出到 YAML 的註解表示法:
{{ /* /*}}
-
需知道
{{- -}}
中-
的意思,知道他要去除那邊的空白 -
可以使用
{{- $var := printf "%s-%s" .Values.xxx .Values.yyy -}}
的寫法來定義範圍區域變數 -
使用
printf
時,要留意資料型別,這部分可查閱 Goprintf
的使用辦法 -
在 name template 內如果要使用全域變數時,可加上
$
,例如{{ $.Values.xxxx}}
-
使用 name template 時,可以利用
dict
將多組資料傳入 name templates 中1
2
3
4
5
6
7
8{{- $data := dict "key1" value1 "key2" value2 -}}
{{ include "name.template" $data }}
// name template 內使用傳進來資料的方式
{{- define "name.template" }}
value1: {{ .key1 }}
value2: {{ .key2 }}
{{end -}} -
使用
range
搭配 Values 中的列表資料,可以快速產生多組設定1
2
3
4{{- range $item := .Values.items }}
value in item: {{ $item.value }}
{{ include "name.template" $item }}
{{- end}} -
HELM 有一些 Flow control 的運算式可以使用,可參閱 Doc
-
內建 function 及善用 pipe 可以簡化很多工作
1
{{ toYaml .Values.resoureces | indent 12}}
- 轉成 YAML 格式且 indent 12 個空白