【问题标题】:Get variables dynamically动态获取变量
【发布时间】:2017-07-28 22:30:44
【问题描述】:

我正在使用 Go 模板通过 Helm 管理部署。

我有这样的 values.yaml 文件:

env: dev
config:
   dev:
       myname: Hi
   live:
       myname: Bye

现在我想根据环境(开发、实时)获取值。 喜欢:

{{ .Values.config. {{.Values.env}} }}

不幸的是,这种方式不起作用,因为它说:

bad character U+007B '{'

有没有办法使用其他值来获取值?

【问题讨论】:

    标签: go go-templates


    【解决方案1】:

    问题来自嵌套模板,这不是 Go 模板的工作方式。

    解决方案取决于数据的内部表示。如果表示为嵌套映射,解决方法是使用管道全局函数index。

    {{ index .Values.config .Values.env `myname` }}
    

    更多关于pipelines的信息。

    更多关于global template functions的信息。

    【讨论】:

    • 嘿!很好的答案,但也可以在不分配以前的变量的情况下工作,例如:{{ index .Values.config .Values.env myname }}
    • @IdirOuhabMeskine 你是对的,而且这更短,所以我编辑了我的答案。
    【解决方案2】:

    以下可能有效。我没有测试它...

    {{ .Values.config.(.Values.env) }}
    

    完整的模板语法见text/template documentation。

    【讨论】:

      猜你喜欢
      • 2011-07-28
      • 2014-06-28
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2019-04-18
      • 2015-08-08
      • 1970-01-01
      相关资源
      最近更新 更多