事实证明并不是超级简单。这取决于(据我所知)下面是哪种类型的东西。
简单的名称:值对
您可以使用range 函数,它的作用很像for-each 循环。
{{- range $name, $labelValue := .Values.labels }}
{{ $name }}: {{ $labelValue }}
{{- end }}
多层次的嵌套属性
如果您有一个嵌套的多级属性,那么我能找到的唯一方法是将其转换为 yaml。你需要非常小心缩进。它做了几件事:
- 它以一个新行开始(一个完整的空行)
- 无论您添加什么缩进都会在每一行的前面
- 如果您在模板中开始缩进,那也将包含在内
来自values.yaml的示例
envVariables:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: db-creds
key: db-pass
第一种有效方式:
spec:
containers:
- image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env: {{ toYaml .Values.envVariables | nindent 12 }}
这将导致:
spec:
containers:
- image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: db-creds
key: db-pass
第二种有效方式:
spec:
containers:
- image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
{{ toYaml .Values.envVariables | nindent 12 }}
注意它是左对齐的。这将导致env: 之后出现一个空行,但会有正确的缩进。
无效方式:
spec:
containers:
- image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
{{ toYaml .Values.envVariables | nindent 12 }}
根据上述情况,没有办法正确缩进,因为第一行只会有额外的缩进,而其他行不会。