Helm Chart - 合并两个具有不同结构的值

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

我的问题与这个问题类似Helm Charts with multiple list in multiple value files但是,变化是值结构不同,我需要一种方法来合并这些

图表有以下内容

 env:
   {{- toYaml .Values.env | nindent 12 }}

默认的values.yaml文件有以下内容

env:
  - name: Test
    value: "Value"

custom.yaml 文件的值定义为

env:
  - name: Test2
    value: "Value2"

基于这篇文章多个值文件中包含多个列表的Helm Charts,我可以通过将图表修改为

将这两个合并为一个。
 env:
    {{- range $key, $value := .Values.abc.env }}
    - name: {{ $key }}
      value: {{ $value | quote }}
    {{- end }}  

但是,如果默认值文件具有不同格式的键/值,则此方法不起作用。

我的要求是需要将worker节点IP作为环境名HOST_IP插入到所有的pod中。 custom.yaml 中的任何其他环境变量都必须添加到此。

env:
  - name: HOST_IP
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: status.hostIP

所以,最终的yaml一定有

env:
  - name: HOST_IP
    valueFrom:
      fieldRef:
        apiVersion: v1
        fieldPath: status.hostIP
  - name: Test2
    value: "Value2"

这里的问题是,当这些被合并时,它提供了不正确的语法。

如何将这两种格式合并为一个格式,以便将它们添加到模板中?有没有办法将这些合并到 helm 中?

kubernetes-helm
1个回答
0
投票

你可以试试这个

env:
  {{- range .Values.env }}
  - name: {{ .name }}
    {{- with .value }}
    value: {{ . | quote }}
    {{- end }}
    {{- with .valueFrom }}
    valueFrom:
      {{ . | toYaml | nindent 6 }}
    {{- end }}
  {{- end }}
© www.soinside.com 2019 - 2024. All rights reserved.