How to pass the content of a file to Helm values.yaml

8/29/2019

I want to use Helm chart of RabbitMQ to set up a cluster but when I try to pass the configuration files that we have at the moment to the values.yaml it doesn't work.

The command that I use:

helm install --dry-run --debug stable/rabbitmq --name testrmq --namespace rmq -f rabbit-values.yaml

rabbit-values.yaml:

rabbitmq:
  plugins: "rabbitmq_management rabbitmq_federation rabbitmq_federation_management rabbitmq_shovel rabbitmq_shovel_management rabbitmq_mqtt rabbitmq_web_stomp rabbitmq_peer_discovery_k8s"
  advancedConfiguration: |-
    {{ .Files.Get "rabbitmq.config" | quote}}

And what I get for advancedConfiguration:

NAME:   testrmq
REVISION: 1
RELEASED: Thu Aug 29 10:09:26 2019
CHART: rabbitmq-5.5.0
USER-SUPPLIED VALUES:
rabbitmq:
  advancedConfiguration: '{{ .Files.Get "rabbitmq.config" | quote}}'
  plugins: rabbitmq_management rabbitmq_federation rabbitmq_federation_management
    rabbitmq_shovel rabbitmq_shovel_management rabbitmq_mqtt rabbitmq_web_stomp rabbitmq_peer_discovery_k8s

I have to mention that:

  • rabbitmq.config is an Erlang file
  • I tried different things including indentation (indent 4)
-- AVarf
kubernetes
kubernetes-helm
rabbitmq

1 Answer

8/29/2019

You can't use Helm templating in the values.yaml file. (Unless the chart author has specifically called the tpl function when the value is used; for this variable it doesn't, and that's usually called out in the chart documentation.)

Your two options are to directly embed the file content in the values.yaml file you're passing in, or to use the Helm --set-file option (link to v2 docs).

helm install --dry-run --debug \
  stable/rabbitmq \
  --name testrmq \
  --namespace rmq \
  -f rabbit-values.yaml \
  --set-file rabbitmq.advancedConfig=rabbitmq.config

There isn't a way to put a file pointer inside your local values YAML file though.

-- David Maze
Source: StackOverflow