我试图理解掌舵,我想知道是否有人可以向我提供一些帮助或帮助我。
所以我确实在下面跑了
helm repo add coreos https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
然后我使用以下命令安装了kube-prometheus:
helm install coreos/kube-prometheus --name kube-prometheus -f values.yaml --namespace monitoringtest
一切正常,但是我试图从json文件中添加一些自定义仪表板,而我正努力了解如何做到这一点。
我正在关注:https://blogcodevalue.wordpress.com/2018/09/16/automate-grafana-dashboard-import-process/
在我的values.yaml中,我在下面添加了
serverDashboardConfigmaps:
- example-dashboards
我知道,如果我这样做:
helm upgrade --install kube-prometheus -f values.yaml --namespace monitoringtest coreos/kube-prometheus
这将导致grafana获取一个名为example-dashboards
的配置文件,并从custom-dashboards
文件夹中加载* .json文件。
apiVersion: v1
kind: ConfigMap
metadata:
name: example-dashboards
data:
{{ (.Files.Glob "custom-dashboards/*.json").AsConfig | indent 2 }}
# Or
#
# data:
# custom-dashboard.json: |-
# {{ (.Files.Get "custom.json") | indent 4 }}
#
# The filename (and consequently the key under data) must be in the format `xxx-dashboard.json` or `xxx-datasource.json`
# for them to be picked up.
现在有两个问题:
如何将以上configmap添加到此头盔版本中?
此custom-dashboards
文件夹在哪里?是在我的笔记本电脑上,然后将其发送到grafana吗?
我需要将所有https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
复制到笔记本电脑上吗?
很抱歉解释所有内容,但我只是想了解这一点。
答案 0 :(得分:2)
我部分理解了。我可以从configmap加载仪表板。还没有来自单独的json文件,但这是一个进步。
对于感兴趣的人,我将其放在我的github页面上:https://github.com/tretos53/notes/blob/master/Grafana/Readme.MD
答案 1 :(得分:1)
您可以在此处为prometheus-operator的图表中找到如何执行此操作的好示例:
https://github.com/helm/charts/tree/master/stable/prometheus-operator/templates/grafana
这是一个ConfigMapList,可从给定目录中获取所有JSON,并将它们存储到由Grafana读取的ConfigMap中。
{{- $files := .Files.Glob "dashboards/*.json" }}
{{- if $files }}
apiVersion: v1
kind: ConfigMapList
items:
{{- range $path, $fileContents := $files }}
{{- $dashboardName := regexReplaceAll "(^.*/)(.*)\\.json$" $path "${2}" }}
- apiVersion: v1
kind: ConfigMap
metadata:
name: {{ printf "%s-%s" (include "prometheus-operator.fullname" $) $dashboardName | trunc 63 | trimSuffix "-" }}
namespace: {{ template "prometheus-operator.namespace" . }}
labels:
{{- if $.Values.grafana.sidecar.dashboards.label }}
{{ $.Values.grafana.sidecar.dashboards.label }}: "1"
{{- end }}
app: {{ template "prometheus-operator.name" $ }}-grafana
{{ include "prometheus-operator.labels" $ | indent 6 }}
data:
{{ $dashboardName }}.json: {{ $.Files.Get $path | toJson }}
{{- end }}
{{- end }}
请注意,ConfigMap的大小可能受到限制: https://stackoverflow.com/a/53015758/4252480
答案 2 :(得分:0)
Helm图表是您打包和分发针对kubernetes的精选应用程序的方式,我认为您使用的是已弃用的图表。检查stable通道,如果您将其检出,则有几种导入仪表板的方法。
重要的是要了解图表是要使用的软件包,您当然可以对其进行扩展,添加自定义资源并为自己的存储库上传,甚至对上游有所贡献。
在运行时,只要您有更改要反映在您的环境中,就可以upgrade(应用更改)在已安装的图表上生效。对于grafana,存在具有仪表板内容的configmap的“ sidecar watcher”,如果您在稳定通道上单击提到的属性sidecar.dashboards.label=grafana_dashboard
,则使sidecar可以监视kubernetes API上带有标签{{1}的任何configmap的事件}(注意grafana_dashboard
的名称空间),只要configmap满足该条件,它将自动影响Grafana上的仪表板(添加/更改/删除...)
我也将Helm Architecture留给您,以获取有关概念的更多信息。