Search code examples
kubernetes-helm

Setting nested data structures from helm command line?


I'm installing the prometheus-redis-exporter Helm chart. Its Deployment object has a way to inject annotations:

# deployment.yaml
...
  template:
    metadata:
      annotations:
{{ toYaml .Values.annotations | indent 8 }}

Typically if I was providing a values file, I could just do this:

# values.yaml
annotations:
  foo: bar
  bash: baz

And then install the chart with:

helm install --values values.yaml

However, in some cases it is more simple for me to specify these values on the command line with --set instead, I'm just not sure how I would specify a nested set like that.

How can I set the above annotations object when installing a helm chart on the commandline:

helm install --set <what_goes_here>

Solution

  • The helm docu has a section The Format and Limitations of --set, which contains what you are looking for.

    --set outer.inner=value results in:

    outer:
      inner: value
    

    Therefore your whole helm command looks like this:

    helm install --set annotations.foo=bar,annotations.bash=baz stable/prometheus-redis-exporter