我有一个如下所示的值文件,
Values.yaml:
configs:
subConfig:
- name: abc
mainConifg:
field1: 'same-name'
multiLineString: |-
{{" "}}(
{{- with .CommonLabels.Remove .GroupLabels.Names }}
{{- range $index, $label := .SortedPairs -}}
{{ if $index }}, {{ end }}
{{- $label.Name }}="{{ $label.Value -}}"
{{- end }}
{{- end -}}
)
- name: xyz
mainConifg:
field1: 'same-name'
multiLineString: |-
{{" "}}(
{{- with .CommonLabels.Remove .GroupLabels.Names }}
{{- range $index, $label := .SortedPairs -}}
{{ if $index }}, {{ end }}
{{- $label.Name }}="{{ $label.Value -}}"
{{- end }}
{{- end -}}
)
由于
mainConfig
块是重复的,我想定义它一次并引用它以获得可维护的代码。如何实现?
阅读有关 YAML 锚点的信息,但不确定如何将其用于多行字符串,即我的情况下的
multiLineString
字段。
不使用
anchoring
的另一个原因是,它可能会产生链接文档中提到的微妙错误。还有其他更好的方法来处理这种情况吗?
为了避免为每个
mainConfig
重复使用 subConfig
块,您可以单独定义它,然后使用 YAML
中的锚点和别名技术引用它。
看起来像这样:
configs:
mainConfig: &mainConfig
field1: 'same-name'
multiLineString: |-
{{" "}}(
{{- with .CommonLabels.Remove .GroupLabels.Names }}
{{- range $index, $label := .SortedPairs -}}
{{ if $index }}, {{ end }}
{{- $label.Name }}="{{ $label.Value -}}"
{{- end }}
{{- end -}}
)
subConfig:
- name: abc
mainConfig: *mainConfig
- name: xyz
mainConfig: *mainConfig