Search code examples
yamlkubernetes-helm

helm loop over a map and use variable file


I have a deployment.yaml template

  env:
  {{- range .Values.env_map }}
  - name: {{ .name }}
    value: {{ .value }}
  {{ end }}

and my file env variable : env/values.dev.yaml

env_map:
  - name: toto
    value: {{ .Values.release_name }}-toto-{{ .Values.env }}

my values.yaml

release_name: {{ .Release.Name }}

I want to use .Release.Name and variable inside the same file.

I have got an error when I try :

helm template toto . -f env/values.dev.yaml
    Error: failed to parse env/values.dev.yaml: error converting YAML to JSON: yaml: line 2: did not find expected key

how I can give Release.Name through the env file


Solution

  • try tpl function

    values.yaml

    env_map:
      - name: toto
        value: "{{ .Release.Name }}-toto-{{ .Release.Name }}"
      - name: momo
        value: "{{ .Release.Name }}-momo-{{ .Release.Name }}"
      - name: nono
        value: "{{ .Release.Name }}-nono-{{ .Release.Name }}"
    

    templates/deployment.yaml

      env:
      {{- range .Values.env_map }}
      - name: {{ .name }}
        value: {{ tpl .value $ }}
      {{- end }}
    

    output

      env:
      - name: toto
        value: test-toto-test
      - name: momo
        value: test-momo-test
      - name: nono
        value: test-nono-test