【问题标题】:Reference Values in Helm methodHelm 方法中的参考值
【发布时间】:2020-10-12 18:58:12
【问题描述】:

我正在尝试通过 Files.Glob 方法从 Helm 中的 Values.yaml 文件中引用一个值。

这是我的 Configmap 模板:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm
data:
  {{- tpl ((.Files.Glob "qa.ns1/*").AsConfig) . | nindent 2 }}

上述工作按预期工作。

文件夹结构是“environment.namespace”。 ns1 是我的命名空间的名称。如何从我的 Values.yaml 文件而不是 ns1 中引用值?

我试过了:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm
data:
  {{- tpl ((.Files.Glob "qa.{{ .Values.namespace }}/*").AsConfig) . | nindent 2 }}

我的 Values.yaml 文件在哪里:

namespace: ns1

当我在上面引用它时,我的 configmap 中没有数据。任何帮助将不胜感激!

【问题讨论】:

    标签: kubernetes kubernetes-helm configmap


    【解决方案1】:

    我会使用 Go text/template printf 函数。拆分成如下所示的变量:

    data:
      {{- $glob := printf "qa.%s/*" .Values.Namespace }}
      {{- $data := (.Files.Glob $glob).AsConfig }}
      {{- tpl $data . | nindent 2 }}
    

    Sprig cat function 也可以使用

    {{- $glob := cat "qa." .Values.Namespace "/*" }}
    

    一旦进入{{ ... }} 模板块,就不能嵌套模板块,但可以直接引用变量和Helm 值。

    【讨论】:

    • 感谢@David Maze!您的答案适用于其中没有句点的目录名称。如果目录名称是“qans1”,它就可以工作。我没有使用“qa.ns1”在配置图中获取任何数据
    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2020-01-16
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多