如何在变量中定义多行字符串并在同一个values.yaml文件中引用它?

问题描述 投票:0回答:1

我有一个如下所示的值文件,

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
的另一个原因是,它可能会产生链接文档中提到的微妙错误。还有其他更好的方法来处理这种情况吗?

kubernetes yaml kubernetes-helm
1个回答
0
投票

为了避免为每个

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
© www.soinside.com 2019 - 2024. All rights reserved.