Hi!
I have a common values file for my releases (only one for environment, because it's about ~70 releases for one env).
But i don't understand how to use .Release.Name as key for my values
Look:
balancer:
resources:
requests:
memory: 384Mi
limits:
memory: 384Mi
backend:
resources:
requests:
memory: 512Mi
limits:
memory: 512Mi
now i want to use resources variable for all my releases separately
something like this, but it doesn't work
environments:
dev:
templates:
default: &default
{{ $releaseName := "{{`{{ .Release.Name }}`}}" }}
chart: "{{`{{ .Release.Name }}`}}"
values:
- values//{{ .Environment.Name }}/values.yaml
- resources: {{ .Environment.Values | get ($releaseName).resources }}
releases:
- name: balancer
<<: *default
- name: backend
<<: *default
can u help me, is it possible?
I'm interested in this too, if its possible. Essentially looking to do something like this (with no success), motivated from this example https://github.com/roboll/helmfile/issues/1143#issuecomment-599824264:
templates:
values: &values
set:
- name: replicas
values: {{ index .Values.replicas .Release.Name }}
with helmfile looking like this
environments:
dev:
values:
- replicas.yaml
releases:
- name: release-name-1
<<: *values
replicas.yaml looks like this
replicas:
release-name-1: 1
helmfile 0.119.0
Hey! Please note that any go template expressions is evaluated BEFORE it's parsed as YAML. That's why it doesn't work.
A possible way would be to use valuesTemplate added in https://github.com/roboll/helmfile/pull/823 and https://github.com/roboll/helmfile/pull/833
Hey! Please note that any go template expressions is evaluated BEFORE it's parsed as YAML. That's why it doesn't work.
A possible way would be to use
valuesTemplateadded in #823 and #833
Hmm, thank you!
Could you help me with one more question - do you know how can i make separate release files for every environment?
I tried something like this, but {{ .Environment.Name }} is not available in readFile step
bases:
- environments.yaml
templates:
default: &default
{{- $apps := readFile "_custom_values/`{{ .Environment.Name }}`/releases.yaml" | fromYaml }}
chart: "{{`{{ .Release.Name }}`}}"
valuesTemplate:
- _custom_values/{{ .Environment.Name }}/values.yaml
{{- range $_, $settings := $apps }}
- resources: {{ $settings | get "resources" | toYaml | nindent 10 }}
{{- end }}
releases:
{{- range $app, $_ := $apps }}
- name: {{ $app }}
<<: *default
{{- end }}
this way doesn't work too
bases:
- environments.yaml
templates:
default: &default
chart: "{{`{{ .Release.Name }}`}}"
valuesTemplate:
- _custom_values/{{ .Environment.Name }}/values.yaml
- releases: _custom_values/{{ .Environment.Name }}/releases.yaml
releases:
{{- range $app, $_ := .Environment.Values | get "releases" }}
- name: {{ $app }}
<<: *default
{{- end }}
err: error during helmfile.yaml.part.1 parsing: template: stringTemplate:8:23: executing "stringTemplate" at <get "releases">: error calling get: no value exist for key "releases" in map[]
in ./helmfile.yaml: error during helmfile.yaml.part.1 parsing: template: stringTemplate:8:23: executing "stringTemplate" at <get "releases">: error calling get: no value exist for key "releases" in map[]
This one works but i want to have separate releases file for every environment.
There is more than 70 services for install.
bases:
- environments.yaml
---
{{- $apps := readFile "_custom_values/common/releases.yaml" | fromYaml }}
templates:
default: &default
chart: "{{`{{ .Release.Name }}`}}"
values:
- _custom_values/{{ .Environment.Name }}/values.yaml
{{- range $_, $settings := $apps }}
- resources: {{ $settings | get "resources" | toYaml | nindent 10 }}
{{- end }}
releases:
{{- range $app, $_ := $apps }}
- name: {{ $app }}
<<: *default
{{- end }}
Okay, now i can iterate over releases, but how can i get resources for release from resources.yaml?
This one doesn't work.
one more not working example
environments:
dev:
values:
- _custom_values/dev/releases.yaml
templates:
default: &default
chart: "{{`{{ .Release.Name }}`}}"
values:
- _custom_values/{{`{{ .Environment.Name }}`}}/values.yaml
- _custom_values/{{`{{ .Environment.Name }}`}}/resources.yaml
valuesTemplate:
- releaseName: '{{`{{ .Release.Name }}`}}'
releases:
{{- range $release := .Values.releases }}
- name: {{ $release }}
<<: *default
values:
- resources: {{ .Values.resources | get $release }}
{{- end }}
err: error during helmfile.yaml.part.0 parsing: template: stringTemplate:20:27: executing "stringTemplate" at <.Values.resources>: can't evaluate field Values in type interface {}
in ./helmfile.yaml: error during helmfile.yaml.part.0 parsing: template: stringTemplate:20:27: executing "stringTemplate" at <.Values.resources>: can't evaluate field Values in type interface {}
Most helpful comment
Hey! Please note that any go template expressions is evaluated BEFORE it's parsed as YAML. That's why it doesn't work.
A possible way would be to use
valuesTemplateadded in https://github.com/roboll/helmfile/pull/823 and https://github.com/roboll/helmfile/pull/833