Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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)
like image 680
AVarf Avatar asked Aug 29 '19 08:08

AVarf


People also ask

How do you pass values to value YAML in Helm?

You can use a --set flag in your Helm commands to override the value of a setting in the YAML file. Specify the name of the setting and its new value after the --set flag in the Helm command. The --set flag in the above command overrides the value for the <service>. deployment.

Can I use values in chart YAML?

Chart developers may supply a file called values. yaml inside of a chart. This file can contain default values. Chart users may supply a YAML file that contains values.


1 Answers

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.

like image 185
David Maze Avatar answered Oct 10 '22 17:10

David Maze