我想使用Kubernetes部署Grafana,但我不知道如何将已配置的仪表板附加到Pod。在我看来,将它们作为键值数据存储在configMap中就像是一场噩梦-例如此处的示例https://github.com/do-community/doks-monitoring/blob/master/manifest/dashboards-configmap.yaml-在我的情况下,这将使我有更多的JSON仪表板-因此,我的看法很恶劣。
我没有将Grafana设置,数据源和仪表板提供程序配置为configMap的问题,因为它们是在单个文件中定义的,但是仪表板的情况对我来说有点棘手。
我所有的仪表板都存储在仓库中的“ / files / dashboards /”下,我想知道如何使它们对Pod可用,除了前面介绍的方式。想知道使用hostPath对象一秒钟,但对于在不同主机上进行多节点部署没有意义。
也许很容易-但是我对Kubernetes还是陌生的,无法弄清楚-因此任何帮助将不胜感激。谢谢!
答案 0 :(得分:4)
您可以从目录中的一组文件自动生成ConfigMap。每个文件都是ConfigMap中的键/值对,文件名是键,文件内容是值(就像在链接的示例中一样,但自动完成而不是手动完成)。
假设您的仪表板文件存储为例如
kubectl create configmap my-config --from-file=files/dashboards
您可以运行以下命令直接在集群中创建ConfigMap:
kubectl create configmap my-config --from-file=files/dashboards --dry-run -o yaml >my-config.yaml
如果您只希望为ConfigMap生成YAML清单,则可以执行以下操作:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
答案 1 :(得分:2)
您可以查看以下选项:
将仪表板的JSON文件存储在git等代码存储库,nexus等文件存储库或普通Web服务器中,并使用init容器在应用程序(Grafana)容器之前获取文件启动,并将它们放在init容器和应用程序(Grafana)容器之间共享的卷上。 This example可能是一个很好的起点。
请注意,这不需要持久卷。在示例中看到-它使用emptyDir
类型的卷。