【问题标题】:Helm string variable - Is it possible to replace a placeholder in a string variable with another helm variable value?Helm 字符串变量 - 是否可以用另一个 helm 变量值替换字符串变量中的占位符?
【发布时间】:2021-02-14 08:18:02
【问题描述】:

我有一个 CRD yaml 的舵图,如下所示

.......
.......
arguments:
   parameters:
     - name: {{ .Values.workflow_template_command_name }}
       value: "echo '{{ .Values.notebook_details }}'| jq .run_id > /tmp/info.txt"
.......
.......

values.yaml 中的字符串变量 notebook_details 有一个占位符,我想用 values.yaml 中定义的另一个变量替换它。

这样的?

value: "echo '{{ .Values.notebook_details |replace 'PLACEHOLDER' .Values.text }}'| jq .run_id > /tmp/info.txt"

有可能吗?如果是这样,正确的语法是什么?

【问题讨论】:

    标签: kubernetes-helm


    【解决方案1】:

    Helm 文档包括一个Template Function List;如果您查看字符串函数列表,就会发现有一个replace 函数。

    如果您想从.Values.notebook_details 中获取字符串,并将字符串文字PLACEHOLDER 替换为.Values.text 中的值,则模板语法几乎与您所拥有的完全相同,但在字符串文字(它在双引号 YAML 字符串中并不重要):

    value: "echo '{{ .Values.notebook_details | replace "PLACEHOLDER" .Values.text }}' | jq ..."
    

    要考虑的另一种方法是允许在值本身中使用 Helm 模板。在其他地方记录的是Helm tpl template function,它将评估字符串作为模板

    value: "echo '{{ tpl .Values.notebook_details . }}' | jq ..."
    
    # values.yaml
    notebook_details: The text is {{ .Values.text }}.
    text: replaced by the `tpl` function
    

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 2020-07-09
      • 2017-06-21
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      相关资源
      最近更新 更多