finds.dev← search

// the find

grafana/grafana-operator

★ 1,335 · Go · Apache-2.0 · updated Jun 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →