Helm 将额外的元素传递给数组

Helm pass extra elements to an array

所以我有一个 Helm 模板:

    spec:
      containers:
        - name: {{ .Values.dashboard.containers.name }}
          image: {{ .Values.dashboard.containers.image.repository }}:{{ .Values.dashboard.containers.image.tag }}
          imagePullPolicy: Always
          env:
            - name: BASE_PATH
              value: /myapp/web

我想给它传递额外的环境变量

我的values.yaml:

  extraEnvs:
    - name: SOMETHING_ELSE
      value: hello
    - name: SOMETHING_MORE
      value: world

我该怎么做才能得到这样的结果?

    spec:
      containers:
        - name: {{ .Values.dashboard.containers.name }}
          image: {{ .Values.dashboard.containers.image.repository }}:{{ .Values.dashboard.containers.image.tag }}
          imagePullPolicy: Always
          env:
            - name: BASE_PATH
              value: /myapp/web
            - name: SOMETHING_ELSE
              value: hello
            - name: SOMETHING_MORE
              value: world

我在想这样的事情:

  {{- if .Values.extraEnvs}}
    env: -|
    {{- range .Values.extraEnvs }}
      - {{ . | quote }}
    {{- end }}
  {{- end -}}

但这会覆盖之前的设置

只需从钻头上取下 env:

          env:
            - name: BASE_PATH
              value: /myapp/web
            {{- if .Values.extraEnvs}}
            {{- range .Values.extraEnvs }}
            - name: {{ .name }}
              value: {{ .value }}
            {{- end }}
            {{- end -}}

您也可以使用评论中提到的 toYaml 而不是自己迭代。

toYaml方式:

spec:
  containers:
    - name: {{ .Values.dashboard.containers.name }}
      image: {{ .Values.dashboard.containers.image.repository }}:{{ .Values.dashboard.containers.image.tag }}
      imagePullPolicy: Always
      env:
        - name: BASE_PATH
          value: /myapp/web
       {{- toYaml .Values.extraEnvs | nindent 10 }}

nindent 10 用于正常部署,您可能需要更改为您自己的。