Open toporek3112 opened 1 week ago
Wouldn't a helm template be enough to solve your problem?
Put your vars into Values and then you can iterate over them with a 'range' loop, golang can iterate well over dicts and lists, so the differing-imported vars can have any yaml structure you want.
Go docs can be hard to understand sometimes so here is a 'range' example: https://stackoverflow.com/questions/54156119/range-over-string-slice-in-golang-template
If you dig around the templates folder in helm chart, you'll be probably able to reverse engineer the rest
I've investigated this a bit and found a way to do this which is officially supported by Grafana (albeit, not very well documented).
By using the __inputs
field in the Dashboard specification and the /api/dashboards/import
endpoint, arbitrary variables can be replaced in a dashboard specification.
I'm open to adding this as a feature to the operator but would like to hear other opinions on this
Is your feature request related to a problem? Please describe. As platform engineers me and my collegues want to provide our customers with some standardized dashboards where our customers can only access their target cluster and namespace. For that we created a template dashboard which we store in git. Now we would like to create a kubernetes manifest
GrafanaDashboard
which takes in a url to the template dashboard json and substitutes some values on the go in the kubernetes manifest. Currently we have to create a seperate json file for each request where we need to change the query by hand. This is error prone and tidiouse if we want to update the "standardized" dashbaord(If applicable)If your feature request solves a bug please provide a link to the community issue
Describe the solution you'd like When I create a
GrafanaDashboard
I would like to be able to substitute some variables in the dashbaord.json. ExampleDescribe alternatives you've considered Alternatives are to create a seperate dashboard.json and then a kubernetes manifest of
GrafanaDashboard
. With the approache described above we could have one central template and multipleGrafanaDashbaord
's which synch with that one url and substitute variables on the go.Additional context n/a
Existing solutions n/a
Would be a really nice feature to the operator. Please let me know what you think of this. BR.