如何将文件内容传递给 Helm values.yaml

AVa*_*arf 10 rabbitmq kubernetes kubernetes-helm

我想使用 RabbitMQ 的 Helm chart 来设置集群,但是当我尝试将我们目前拥有的配置文件传递给 values.yaml 时,它不起作用。

我使用的命令:

helm install --dry-run --debug stable/rabbitmq --name testrmq --namespace rmq -f rabbit-values.yaml
Run Code Online (Sandbox Code Playgroud)

兔子值.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}}
Run Code Online (Sandbox Code Playgroud)

我得到了什么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
Run Code Online (Sandbox Code Playgroud)

我不得不提的是:

  • rabbitmq.config 是一个 Erlang 文件
  • 我尝试了不同的东西,包括缩进 ( indent 4)

Dav*_*aze 16

您不能在values.yaml文件中使用 Helm 模板。(除非图表作者tpl在使用该值时专门调用了该函数;对于这个变量,它没有,通常在图表文档中调用。)

您的两个选项是直接将文件内容嵌入到values.yaml您传入的文件中,或者使用Helm--set-file选项(链接到 v2 文档)。

helm install --dry-run --debug \
  stable/rabbitmq \
  --name testrmq \
  --namespace rmq \
  -f rabbit-values.yaml \
  --set-file rabbitmq.advancedConfig=rabbitmq.config
Run Code Online (Sandbox Code Playgroud)

但是,没有办法将文件指针放入本地值 YAML 文件中。

  • 如果有人想知道如何使用 `--set-file` 传递嵌套文件名,关键也在文档中:“_有时您需要在 `--set` 行中使用特殊字符。您可以使用反斜杠来转义字符_” - 例如 `--set-file 'configFiles.config\.toml'=custom-config.toml` 将为您解决问题。 (11认同)