Grafana 图表的 helm 模板转义值

val*_*ard 6 grafana kubernetes-helm

明智的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 }
Run Code Online (Sandbox Code Playgroud)

只要super-dashboard.json其中没有任何东西,它就可以很好地工作,例如:

"legendFormat": "{{status}} Status",

不幸的是,我们的仪表板确实有一条如此糟糕的线。当我运行 helm 时,我得到:

Error: UPGRADE FAILED: parse error at (templates/dashboards/super-dashboard.json:282): function "status" not defined
Run Code Online (Sandbox Code Playgroud)

自然地,它正在寻找一些statusHelm 模板语言中不存在的方法,因此失败了。如果我可以忽略对该纠缠文件的解析就好了。哦,你们这些聪明的互联网大师,对于你们集体智慧的谦卑探索者,你们有什么明智的建议吗?

val*_*ard 5

问题是我的super-dashboard.json文件与模板位于同一目录中,并且 helm 尝试将其模板化。解决方案是具有如下目录结构:

mychart/
  templates/
    super-dashboard.yaml
  files/
    super-dashboard.json
Run Code Online (Sandbox Code Playgroud)

那么该yaml文件有:

{{ .Files.Get "files/super-dashboard.json" | indent 4 }}
Run Code Online (Sandbox Code Playgroud)

我认为您必须将文件放在同一目录中,但它必须位于图表的根目录中。