A Kubernetes Operator based on the Operator SDK for creating and managing Grafana instances.
We have set up a channel dedicated to this operator on the Kubernetes community Slack, this is an easier way to address more immediate issues and facilitate discussion around development/bugs etc. as well as providing support for questions about the operator.
1: Join the Kubernetes Slack (if you have not done so already) Kubernetes Slack.
2: You will receive an email with an invitation link, follow that link and enter your desired username and password for the workspace(it might be easier if you use your Github username for our channel).
3: Once registered and able to see the Kubernetes community Slack workspace and channels follow this link to the grafana-operator channel.
Alternatively: If you're already a member of that workspace then just follow this link to the grafana-operator channel or search for "grafana-operator" in the browse channels option .
The Operator is available on Operator Hub.
It can deploy and manage a Grafana instance on Kubernetes and OpenShift. The following features are supported:
- Install Grafana to a namespace
- Import Grafana dashboards from the same or other namespaces
- Import Grafana datasources from the same namespace
- Install Plugins (panels) defined as dependencies of dashboards
The operator supports the following flags on startup.
See the documentation for a full list.
Flags can be passed as args
to the container.
The following Grafana resources are supported:
- Grafana
- GrafanaDashboard
- GrafanaDatasource
all custom resources use the api group integreatly.org
and version v1alpha1
.
Represents a Grafana instance. See the documentation for a description of properties supported in the spec.
Represents a Grafana dashboard and allows specifying required plugins. See the documentation for a description of properties supported in the spec.
Represents a Grafana datasource. See the documentation for a description of properties supported in the spec.
Init the submodules first to obtain grafonnet:
$ git submodule update --init
Then build the image using the operatpr-sdk:
$ operator-sdk build <registry>/<user>/grafana-operator:<tag>
You can run the Operator locally against a remote namespace using the operator-sdk:
Prerequisites:
- operator-sdk installed
- kubectl pointing to the local context. minikube automatically sets the context to the local VM. If not you can use
kubectl config use <context>
or (if using the OpenShift CLI)oc login -u <user> <url>
- make sure to deploy the custom resource definition using the command
kubectl create -f deploy/crds
$ operator-sdk run local --namespace=<namespace> --operator-flags="<flags to pass>"
Grafana has provisioning support for multiple channels (notifiers) of alerts. The operator does currently not support this type of provisioning. An empty directory is mounted at the expected location to prevent a warning in the grafana log. This feature might be supported in the future.