// the find
grafana/grafana-operator
An operator for Grafana that installs and manages Grafana instances, Dashboards and Datasources through Kubernetes/OpenShift CRs
A Kubernetes operator that manages Grafana instances, dashboards, datasources, alert rules, and notification resources via CRDs. Aimed at platform/ops teams who want Grafana configuration living in Git and reconciled by a controller rather than managed through the UI or manual Helm values. Works with both in-cluster and external Grafana instances.
The CRD surface is unusually complete — alert rule groups, contact points, mute timings, notification policies, library panels, and service accounts all have first-class resources, not just the basics. The instanceSelector label-based routing is a clean design that lets one operator manage multiple Grafana instances in different namespaces without extra configuration. Dashboard content fetching supports configmaps, URLs, OCI registries, jsonnet, and grafana.com — practical options covering most real setups. The content cache layer with gzip compression means repeat reconciles don't hammer the network or Grafana API.
Still on v1beta1 after years of development — the API has been stable in practice but the version string will give pause to anyone building tooling around it. The embedded grafonnet library is frozen at v7.0 (2019-era), so anyone wanting modern Grafonnet has to bring their own. Cross-namespace datasource references work but require explicit RBAC grants that the docs underexplain — you will debug this. No support for Grafana's newer unified alerting state history or recorded queries, so alert-heavy shops will hit ceiling quickly.