Cherry
Cherry

Reputation: 33628

Helmfile no values during tpl function

I am trying to render '{{ tpl .Values.Kuber.Namespace . }}' and got error:

in ./helmfile.yaml: failed to read .helmfile\environments.yaml: failed to load environment values file "envs\local\ns\values\names.yaml.gotmpl": failed to render [envs\local\ns\values\names.yaml.gotmpl], because of template: stringTemplate:15:24: executing "stringTemplate" at <.Values.Name.LoDash>: map has no entry for key "Name"

I have found a bug but have no idea how modify my code to get values rendered properly. Could somebody please tell where the error and what should be modified to get tpl function working? (it able to see Kuber.Namespace but can not see anything other)

Thanks in advance!

helmfile.yaml

bases:
  - .helmfile/environments.yaml
---

helmDefaults:
  kubeContext: {{ .Values.kubeContext }}

helmfiles:
  - path: helmfile-app.yaml
    values:
      - {{ toYaml .Values | nindent 8 }}

helmfile-app.yaml

helmDefaults:
  kubeContext: {{ .Values.kubeContext }}
  cleanupOnFail: false
  verify: false
  historyMax: 10
  skipDeps: true
  reuseValues: false

repositories:
  - name: ealenn
    url: https://ealenn.github.io/charts

releases:
  - name: postgres
    namespace: '{{ tpl .Values.Kuber.Namespace . }}'

    chart: ealenn/echo-server
    createNamespace: true

.helmfile/environments.yaml

environments:
  local/ns:
    missingFileHandler: Info
    values:
      - envs/{{ .Environment.Name }}/values/*.*
      - envs/{{ .Environment.Name }}/*.*

envs/local/ns/values/names.yaml.gotmpl

kubeContext: minikube
LoDash: '{{ .Environment.Name | replace "/" "_" }}'
Name:
  LoDash: '{{ .Environment.Name | replace "/" "_" }}'
  Dash: '{{ .Environment.Name | replace "/" "-" }}'
  Slash: '{{ .Environment.Name }}'
Kuber:
  Namespace: "{{ .Values.Name.LoDash }}"

Upvotes: 0

Views: 39

Answers (0)

Related Questions