【发布时间】:2021-05-15 16:46:06
【问题描述】:
聪明的SOers。事实证明,Grafana 仪表板 json 文件使用与 helm 相同的 {{ }} 来进行变量替换。我有一个 grafana 图表,其中包含这些 {{ }} 到令人不快的程度。
当我想将该图表放入模板时,如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
name: super-dashboard
namespace: monitoring
labels:
grafana_dashboard: "1"
data:
super-dashboard.json: |-
{{ .Files.Get "super-dashboard.json" | indent 4 }
只要super-dashboard.json 中没有任何东西,它就可以很好地工作:
"legendFormat": "{{status}} Status",.
不幸的是,我们的仪表板确实有一条可悲的线。当我运行 helm 时,我得到:
Error: UPGRADE FAILED: parse error at (templates/dashboards/super-dashboard.json:282): function "status" not defined
自然地,它正在寻找一些在 helm 模板语言中不存在的方法 status,因此失败了。如果我能忽略解析那个纠缠不清的文件就好了。哦,各位聪明的互联网高手们,您对寻求集体智慧的卑微寻求者有什么明智的建议吗?
【问题讨论】:
-
你是如何安装图表的?
.Files.Get路径不应导致模板引擎重新解释包含的文件;为此,您需要显式调用tpl。helm template是否适用于图表,如果适用,生成的 YAML 在此块周围看起来或多或少正确吗? -
我正在安装图表:
helm upgrade --install mychart -f ./mychart/values.yaml ./mychartjson 文件与模板位于同一目录中。 (./mychart/template/) -
这里有一些讨论:github.com/helm/helm/issues/2798 我喜欢 ntfrnzn 的想法,但如果我在相关目录中包含这些文件中的任何一个,我就会收到错误消息。如果我将它们放在目录之外,它们就不会被拾取。