网站 引导页 设计,万网网站建设流程,wordpress 运行卡,微信小程序平台登录入口模板 最佳实践指南的这部分聚焦于模板。 templates/结构
template/目录结构应该如下#xff1a;
1、如果生成YAML输出。模板文件应该有扩展名.yaml。扩展名是.tpl可用于生成非格式化内容的模板文件。
2、模板文件名称应该使用横杠符号#xff08;my-example-configmap.yam…模板 最佳实践指南的这部分聚焦于模板。 templates/结构
template/目录结构应该如下
1、如果生成YAML输出。模板文件应该有扩展名.yaml。扩展名是.tpl可用于生成非格式化内容的模板文件。
2、模板文件名称应该使用横杠符号my-example-configmap.yaml不用驼峰记法。3
3、每个资源的定义应该在它自己的模板文件中。
4、模板文件的名称应该反映名称中的资源类型。比如foo-pod.yamlbar-svc.yaml 定义模板的名称
定义的模板在{{ define }} 命令中定义的模板是可全局访问的。这就意味着chart和所有的子chart都可以访问用 {{ define }} 创建的所有模板。
因此所有定义的模板名称应该被命名空间化。
正确的
{{- define nginx.fullname }}
{{/*...*/}}
{{ end -}}
{{- define nginx.fullname }}
{{/* ... */}}
{{ end -}}
不正确的
{{- define fullname -}}
{{/*...*/}}
{{ end -}}
强烈建议通过helm create命令创建新chart因为模板名称是根据此最佳实践自动定义的。 格式化模板
模板应该使用两个 空格 缩进永远不要用tab。
模板命令的大括号前后应该使用空格
正确的
{{ .foo }}
{{ print foo }}
{{- print bar -}}
{{ .foo }}
{{ print foo }}
{{- print bar -}}
不正确的
{{.foo}}
{{print foo}}
{{-print bar-}}
{{.foo}}
{{print foo}}
{{-print bar-}}
模板应该尽可能多地使用空格
foo: {{- rang .Values.items }} {{ . }} { end -}}
foo:{{- range .Values.items }}{{ . }}{{ end -}}
块例如控制结构可以缩进表示模板代码流。
{{ if $foo -}} {{- with .Bar }}Hello{{ end -}}
{{- end -}}
{{ if $foo -}}{{- with .Bar }}Hello{{ end -}}
{{- end -}}
然后因为YAML是面向空格的语言代码缩进通常不可能遵守规范。 生成模板中的空格
最好在生成的模板中将空格量保持在最小值。尤其是大量的空行不应该相邻出现。但偶尔有空行尤其在逻辑块之间是没问题的。
这样是最好的
apiVersion: batch/v1
kind: Job
metadata: name: example labels: first: first second: second
apiVersion: batch/v1
kind: Job
metadata:name: examplelabels:first: firstsecond: second
这样也OK
apiVersion: batch/v1
kind: Job metadata: name: example labels: firts: first second: second
apiVersion: batch/v1
kind: Jobmetadata:name: examplelabels:first: firstsecond: second
但避免这样
apiVersion: batch/v1
kind: Job metadata: name: example labels: first: first second: second
apiVersion: batch/v1
kind: Jobmetadata:name: examplelabels:first: firstsecond: second
注释YAML注释 vs. 模板注释
YAML和Helm模板都有注释标记符。
YAML注释
# This is a comment
type: sprocket
# This is a comment
type: sprocket
模板注释
{{- /*
This is a comment.
*/}}
type: frobnitz
{{- /*
This is a comment.
*/}}
type: frobnitz
描述模板的特性应当使用模板注释比如解释一个定义的模板
{{- /*
mychart.shortname provides a 6 char truncated version of the release name.
*/}}
{{ define mychart.shortname -}}
{{ .Release.Name | trunc 6 }}
{{- end -}}
{{- /*
mychart.shortname provides a 6 char truncated version of the release name.
*/}}
{{ define mychart.shortname -}}
{{ .Release.Name | trunc 6 }}
{{- end -}}
在模板中当有益于Helm用户可能在调试时查看注释可以使用YAML注释。
# This may cause problems if the value is more than 100Gi
memory: {{ .Values.macMem | quote }}
# This may cause problems if the value is more than 100Gi
memory: {{ .Values.maxMem | quote }}
以上注释在用户执行helm install --debug时时可见的而在{{- /* */}}部分注释不会显示。 在模板和模板输出中使用JSON
YAML是JSON的超集。在某些情况下使用JSON语法比其他YAML表示更具可读性。
比如这个YAML更接近表示列表的普通YAML方法
arguments: - --dirname - /foo
arguments:- --dirname- /foo
但是折叠成JSON列表样式时会更易阅读
arguments: [--dirname, /foo]
arguments: [--dirname, /foo]
使用JSON可以很好地提高易读性。然而JSON语法不应用于表示更复杂的结构。
在处理嵌入到YAML中的纯JSON时比如初始化容器配置使用JSON格式当然是最合适的。 ————————————
仅用于本人学习
来源Helm | Docs