Helm private values

6/29/2021

I could not find anything by just googling, does Helm support private values?

So I have my chart and my values.yaml

privateProp: hello

publicProp: world

I have some values that I want to exposed to the end user of my chart and others that I do not want, however those "private" values are being used in many places.

For example: publicProps is overridable by the user of the chart, but I would like to block access to privateProp, however it is reused in many places:

containers:
  name: {{.Values.privateProp}}
nodeSelector:
  name: {{.Values.privateProp}}

I saw there is {{$privateProp := "hello"}}, but it is not clear how I can access it elsewhere in my files

How can I achieve this?

-- Matteo
kubernetes
kubernetes-helm

1 Answer

6/29/2021

Ok, I have found a solution to my problem.

You can create a file called _variables.tpl, the name does not matter

and then declare a variable:

{{- define "privateProp" -}}
{{- print "hello" -}}
{{- end -}}

and then you can use it wherever you want in your chart by doing this:

    spec:
      containers:
        - name: {{ .Values.dashboard.containers.name }}
          image: {{ .Values.dashboard.containers.image.repository }}:{{ .Values.dashboard.containers.image.tag }}
          imagePullPolicy: Always
          ports:
            - containerPort: {{ include "privateProp" . }} # <== This
-- Matteo
Source: StackOverflow