首先, 創建一個Chart: helm create mychart
接下來, 討論的假設前提是你已經熟悉Go Template的基本用法.
Flatten
configSvcName: mysrv
configSvcUrl: http://example.com
Use Flatten
name: "{{ .Values.configSvcName }}
url: "{{ .Values.configSvcUrl }}
Nested
config:
svc:
name: mysrv
url: http://example.com
Use Nested
name: "{{ .Values.config.svc.name }}"
url: "{{ .Values.config.svc.url }}"
移除左側/右側空格: -
通過在分隔符左側或右側增加-, 能夠起到移除左側或右側所有空白的效果, 例如:
"{{23 -}} < {{- 45}}"
生成的字符串是:
23<45
此外, -也可以用來減少空格浪費的空間, 例如一些帶縮進的控制語句if/else/with/for等, 本身不會嵌入到最終生成的YAML中, 但我們為了查看方便, 會對其增加縮進和換行, 這些空白沒有必要帶進最終渲染出的YAML中:
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
需要注意, 換行本身也是空白字符!
管道: |
與Linux下的命令管道類似, Go Template中同樣也可以使用管道, 例如:
{{ "abc" | upper }}
生成:
ABC
轉義字符串: quote
yaml在處理數字,字符串和注釋時存在微妙的變化, 為了安全的轉義它們, 可以使用quote:
{{ .Values.text | quote }}
或
{{ quote .Values.text }}
左側增加N個空格縮進: nindent N
由於yaml通過縮進來區分層級, 在編寫Kubernetes的yaml文件時, 可以結合 - 和 nindent, 來精確的制造偏移, 防止直接編輯空格出現失誤, 而肉眼難以檢查.
affinity:
{{- toYaml . | nindent 8 }}
默認值: default XXX
drink: {{ .Values.favorite.drink | default "tea" | quote }}