Grafana 图表的 helm 模板转义值
Posted
技术标签:
【中文标题】Grafana 图表的 helm 模板转义值【英文标题】:helm template escaped values for Grafana charts 【发布时间】: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 ./mychart
json 文件与模板位于同一目录中。 (./mychart/template/
)
这里有一些讨论:github.com/helm/helm/issues/2798 我喜欢 ntfrnzn 的想法,但如果我在相关目录中包含这些文件中的任何一个,我就会收到错误消息。如果我将它们放在目录之外,它们就不会被拾取。
【参考方案1】:
问题是我的super-dashboard.json
文件与模板位于相同的目录中,并且 helm 试图对其进行模板化。解决方案是具有如下目录结构:
mychart/
templates/
super-dashboard.yaml
files/
super-dashboard.json
那么yaml
文件有:
.Files.Get "files/super-dashboard.json" | indent 4
我以为您必须将文件放在同一目录中,但它必须位于图表的根目录下。
【讨论】:
以上是关于Grafana 图表的 helm 模板转义值的主要内容,如果未能解决你的问题,请参考以下文章
通过 Terraform Helm 提供程序设置 grafana.ini
使用 helm 部署时基于环境的不同 grafana.ini
helm install 后 Grafana pod 不断重启