我的问题与这个问题类似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 中?
你可以试试这个
env:
{{- range .Values.env }}
- name: {{ .name }}
{{- with .value }}
value: {{ . | quote }}
{{- end }}
{{- with .valueFrom }}
valueFrom:
{{ . | toYaml | nindent 6 }}
{{- end }}
{{- end }}