helm join list from values file

3/14/2018

I'm looking for a solution to transform a list in my values.yaml in a comma separated list.

values.yaml

app:
  logfiletoexclude:
    - "/var/log/containers/kube*"
    - "/var/log/containers/tiller*"

_helpers.tpl:

{{- define "pathtoexclude" -}}
{{- join "," .Values.app.logfiletoexclude }}
{{- end -}}

configmap:

<source>
  @type tail
  path /var/log/containers/*.log
  exclude_path [{{ template "pathtoexclude" . }}]
  ...
  ...
</source>

The problem is there is missing quotes in my result

 exclude_path [/var/log/containers/kube*,/var/log/containers/tiller*]

How can I fix it to be able to have:

  exclude_path ["/var/log/containers/kube*","/var/log/containers/tiller*"] 

I've try with:

{{- join "," .Values.app.logfiletoexclude | quote}}

but this give me:

exclude_path ["/var/log/containers/kube*,/var/log/containers/tiller*"] 

Thanks

-- Matt
kubernetes-helm

2 Answers

11/28/2019

Alternatively, the following also worked for me without having to extra-quote the input values:

"{{- join "\",\"" .Values.myArrayField }}"

Of course, this only works for non-empty arrays and produces a single empty quoted value for an empty array. Someone knows a simple guard one could integrate here?

-- enote-kane
Source: StackOverflow

3/15/2018

Double quotes should be escaped in .Values.app.logfiletoexclude values.

values.yaml is:

app:
  logfiletoexclude:
    - '"/var/log/containers/kube*"'
    - '"/var/log/containers/tiller*"'

_helpers.tpl is:

{{- define "pathtoexclude" -}}
{{- join "," .Values.app.logfiletoexclude }}
{{- end -}}

And finally we have:

exclude_path ["/var/log/containers/kube*","/var/log/containers/tiller*"]
-- nickgryg
Source: StackOverflow