Grafana und Helm - Teil 1 | Das Setup
Wer mit Kubernetes und Prometheus arbeitet, kennt wahrscheinlich auch die Visualisierungs-Software Grafana.
In diesem Artikel zeigen wir welche Möglichkeiten der Paketmanager Helm bietet Grafana auf Deinem Kubernetes Cluster zu konfigurieren und zu verwenden.
Dazu solltest Du dich vorher mit Helm auseinandergesetzt haben, hier erklären wir Dir die Grundlagen.
\
Ausgangssituation
Wir haben ein Kubernetes Cluster mit dem Namespace monitoring, worin ein whoami Service und Prometheus laufen.
Vom whoami werden Metriken exportiert, die wir gerne über Prometheus mit Grafana visualisieren wollen.
$ helm install -n prometheus --namespace monitoring stable/prometheus
$ git clone git@github.com:bee42/whoamI.git
$ cd whoamI/whoami/
$ helm dependencies update
$ helm install -n whoami --namespace monitoring --set image.tag=2.2.0 .
\
Das Deployment
Eine erste, einfache Version lässt sich mithilfe der Default-Konfiguration des Helm-Charts deployen.
$ helm install -n grafana --namespace monitoring stable/grafana
Dadurch werden alle nötigen Resourcen angelegt und eine einsatzbereite Version von Grafana gestartet.
Um von Deinem Client aus den Service erreichen zu können, bietet sich als kurzfristige Lösung ein port-forwarding an.
$ kubectl port-forward -n monitoring svc/grafana 3000:80
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
Für den Login werden Username und Passwort benötigt.
Der Standard User ist “admin” und das Passwort lässt sich aus dem automatisch erzeugten Secret entnehmen:
$ kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
u7DtVthVmnuUV3zzhdUp53CMgEch6bSKo5XATvw9
Grafana ist dann unter 127.0.0.1:3000
erreichbar.
\
Konfiguration von Grafana
Um Konfigurationen an Grafana selbst vorzunehmen gibt es den Chart Parameter “grafana.ini”.
Über diesen lassen sich Änderungen bspw. bezüglich der User- oder Security-Einstellungen vornehmen.
Auf der offiziellen Website von Grafana ist eine Liste aller Einstellungsmöglichkeiten zu finden.
Bsp. (values.yaml):
[...]
grafana.ini:
users:
allow_sign_up: true
security:
admin_password: "mypassword"
[...]
\
Dashboards & Datasources
Da man sein Grafana üblicherweise mehr als ein einziges Mal deployen möchte (ohne jedes Mal die Dashboards und Datasources manuell setzen zu müssen), gibt es die Möglichkeit diese direkt mit auszuliefern.
Die sinnvollste Variante dafür ist das Sidecar Pattern zu nutzen. Pro Datenquelle und Dashboard wird eine ConfigMap angelegt und diese anhand eines Labels von Grafana automatisch importiert.
Dafür müssen die Sidecars aktiviert und die Labels zur Identifizierung gesetzt werden.values.yaml
[...]
sidecar:
dashboards:
enabled: true
label: grafana_dashboard
datasources:
enabled: true
label: grafana_datasource
[...]
templates/my-dashboard-cm.yaml
templates/my-datasource-cm.yaml
Das Ergebnis ist ein einfaches Dashboard zur Überwachung unserer whoami Anwendung.
Hinweis: Damit das Dashboard Daten anzeigt, muss der whoami Service einige Male aufgerufen werden!
Eine ausführliche Dokumentation zur Konfiguration der Dashboards und Datasources sowie alternative Methoden zum Einbinden dieser findest Du im Grafana Helm Chart Repository.
Im zweiten Teil der Serie geht es um die Dashboardentwicklung und worauf dabei zu achten ist. \
- Jan