This document describes how to get up and running with a new Grafana instance no Kubernetes.
The first step is to install the Grafana operator to a namespace in your cluster.
To create a namespace named grafana
run:
$ kubectl create namespace grafana
To deploy the operator to that namespace you can use deploy/operator.yaml
:
$ kubectl create -f deploy/operator.yaml -n grafana
Check the status of the operator pod:
$ kubectl get pods -n grafana
NAME READY STATUS RESTARTS AGE
grafana-operator-78cfcbf8db-ssrgq 1/1 Running 0 17s
The operator accepts a number of flags that can be passed in the args
section of the container in the deployment:
- --grafana-image: overrides the Grafana image, defaults to
docker.io/grafana/grafana
. - --grafana-image-tag: overrides the Grafana tag, defaults to
5.4.2
. - --scan-all: watch for dashboards in all namespaces. This requires the the operator service account to have cluster wide permissions to
get
,list
,update
andwatch
dashboards. Seedeploy/examples/cluster_roles
. - --openshift: force the operator to use a route instead of an ingress. Note that routes are only supported on OpenShift.
See deploy/operator.yaml
for an example.
Create a custom resource of type Grafana
, or use the one in deploy/examples/Grafana.yaml
.
The resource accepts the following properties in it's spec
:
- hostname: The host to be used for the ingress. Optional when
--openshift
is set. - dashboardLabelSelector: A list of either
matchLabels
ormatchExpressions
to filter the dashboards before importing them. - containers: Extra containers to be added to the Grafana deployment. Can be used for example to add auth proxy side cars.
- secrets: A list of secrets that are added as volumes to the deployment. Mostly useful in combination with extra
containers
.
The other accepted properties are logLevel
, adminUser
, adminPassword
, basicAuth
, disableLoginForm
, disableSignoutMenu
and anonymous
. They map to the properties described in the official documentation, just use camel case instead of underscores.
To create a new Grafana instance in the grafana
namespace, run:
$ kubectl create -f deploy/examples/Grafana.yaml -n grafana
Get the URL of the instance and open it in a browser:
$ kubectl get ingress -n grafana
NAME HOSTS ADDRESS PORTS AGE
grafana-ingress grafana.apps.127.0.0.1.nip.io 80 28s