如何在Helm Chart中将命名模板用作YAML列表元素?
问题描述
现有如下Helm命名模板:
{{- define "mytemplate" -}} name: foo value: bar details: baz {{- end -}}
希望将其作为evenmore列表的元素,生成如下YAML结构:
some: more: evenmore: - name: foo value: bar details: baz
尝试过直接将mytemplate定义为列表元素,但无法和其他命名模板使用merge函数;用list函数会导致列表元素变成多行字符串或缩进不匹配,询问是否有无需修改原命名模板的实现方法。
解决方案
可以通过在列表项的缩进层级中调用include函数配合nindent来实现,完全不需要修改原模板。
示例代码如下:
some: more: evenmore: - {{ include "mytemplate" . | nindent 8 }}
具体说明:
include "mytemplate" .会直接渲染你定义好的mytemplate内容nindent 8会把渲染出的每一行内容都缩进8个空格,刚好匹配列表项-之后的层级要求,确保生成的YAML结构缩进正确,不会变成多行字符串,也能正常和其他模板使用merge函数。
内容的提问来源于stack exchange,提问作者czuhajster
相关产品推荐
相关产品推荐

