2 回答

TA贡献1891条经验 获得超3个赞
tpl您可以添加条件以跳过另一种类型的值,然后在函数中传递字符串
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{ end }}
{{ end }}
{{ end }}
如果您还想在输出中打印另一个键值,则可以使用、print或任何其他打印选项。printfprintln
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{- else -}}
{{ printf "%v: %v" $name $config }}
{{ end }}
{{ end }}
{{ end }}

TA贡献2011条经验 获得超2个赞
如果用户想从 values.yaml 中添加配置映射,我希望用户启用/禁用
这是否意味着默认情况下为configMap空?如果是这种情况,您可以检查空值
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Release.Namespace }}
name: {{include "chart.fullname" .}}
labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- range $name, $config := .Values.configMap }}
{{ $name }}: |
{{ tpl $config $ | indent 4 }}
{{- end }}
{{- end -}}
默认情况values.yaml下是一个空字典:
configMap: {}
这样,只有当用户填写时configMap,才会生成manifest。
除了这个可选的激活之外,您似乎在对值进行迭代时遇到问题,因为它们的类型不同。
您可以使用更简单的toYaml过滤器(参见此处)
最终结果可能是这样的:
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Release.Namespace }}
name: {{include "chart.fullname" .}}
labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- toYaml .Values.configMap | nindent 2 -}}
{{- end -}}
- 2 回答
- 0 关注
- 99 浏览
添加回答
举报