【问题标题】:How an helm chart have an attribute with value contain {{ }}舵图如何具有包含值的属性 {{ }}
【发布时间】:2021-06-25 19:10:59
【问题描述】:

在 helm 图表中,我们可以将 value 定义为 {{ Values.name }} 之类的东西,它将被 values.yaml 中定义的真实值替换。 但是,如果原始值具有类似的格式,例如 {{name}},则在尝试安装该图表时,它将由于未定义“名称”的错误而失败。 有什么办法可以处理吗?

【问题讨论】:

  • 使用“{{name}}”作为名称的目的是什么?
  • 在一些配置文件中,比如grafana的dashboard json文件,prometheus中的alert规则定义,都使用了{{..}}格式

标签: kubernetes-helm


【解决方案1】:

您可以使用 {{ "{{" }} 转义 Go 模板中的双花括号。

但最好的方法是将警报规则嵌入到单独的文件中:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "fullname" . }}-rules
  labels:
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    prometheus: {{ template "fullname" . }}
data:
  {{ (.Files.Glob "rules/*").AsConfig | indent 2 }}

【讨论】:

  • 仍然无法工作。尝试部署 helm 图表并收到错误消息:未定义函数“名称”
  • 对于非 gophers:如果您的模板片段位于 json: '{ "mustache": "{{ .Values.prefix }} {{ name }}" }' 之类的字符串中,则可以使用反引号来引用内部 {{(尽管它变得非常混乱):json: '{ "mustache": "{{ .Values.prefix }} {{ `{{` }} name {{ `}}` }}" }'
【解决方案2】:

您可以将其嵌入为带有反引号的文字字符串:

{{`{{ "name" }}`}}

【讨论】:

  • 这是唯一对我有用的建议
【解决方案3】:

使用'{{"{{"}}name{{"}}"}}' 将其读取为{{name}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2012-10-18
    相关资源
    最近更新 更多