Matomo für Kubernetes

Der Vergleich zwischen: Docker Images, Helm Charts und einem Kubernetes Operator.

Matomo ist eine Open-Source Web-Analytics-Plattform und besteht aus folgenden Komponenten:

  1. Backend-Komponente geschrieben in PHP: github.com/matomo-org/matomo
  2. Relationale Datenbank, z.B. MySQL oder MariaDB
  3. Optional kann Redis für das Queued Tracking und Caching verwendet werden.

Matomo Docker für Kubernetes

Matomo veröffentlicht auf GitHub Docker-Images (github.com/matomo-org/docker), die eine einfache lokale Installation ermöglichen. Mithilfe von volumes kann die initiale Konfiguration persistiert werden.

Achtung Bei einem Matomo Versionsupgrade wird die initiale Konfiguration wieder überschrieben und Matomo muss neu konfiguriert werden.

Um dieses Problem zu lösen, muss bei jedem Container-Start überprüft werden, ob eine Datenbankmigration notwendig ist. In Kubernetes kann diese Aufgabe einem InitCotainer übernommen werden. Mit dem Matomo Plugin ExtraTools kann diese Überprüfung über die Kommandozeile vorgenommen werden.

Das Deployment des Matomo Docker-Images auf Kubernetes ist jedoch trotzdem noch ziemlich aufwendig, da mehrere Komponenten manuell konfiguriert werden müssen (Deployment, Service, Ingress).

Zusätzlich muss eine externe (managed) Datenbank verwendet werden und diese mit der manuellen Installation verknüpft werden.

Matomo Helm Chart

Helm-Charts bieten die Möglichkeit die davor manuell konfigurierten Komponenten in einem chart zusammenzufassen. Auf der Plattform Artifact Hub können Matomo Helm-Charts gefunden werden.

Diese Helm-Charts müssen jedoch vom Anwender konfiguriert werden. Oftmals muss definiert werden in welcher Konfiguration Matomo installiert werden soll (z.B. mit oder ohne Redis). Auch muss bei einem Upgrade aufgepasst werden, ob die neuen Images noch kompatibel mit den bestehenden Volumes sind. Ein Major Upgrade der Datenbank ist nicht via Helm-Charts möglich.

Zusammenfassend kann man sagen, dass Helm-Charts zwar ein schneller Weg für die Installation von Matomo sind, langfristig jedoch deutlichen Aufwand bedeuten können.

Schritt-für-Schritt-Anleitungen können zum Beispiel hier gefunden werden:

Matomo Kubernetes Operator

Eine weitere Möglichkeit für die automatische Installation und den Betrieb für Matomo bietet ein Kubernetes Operator. Dieser individualisiert nicht nur die initiale Installation an die Cloud-Infrastruktur des Kunden, sondern übernimmt auch den das Update-Management. Ein Update des Kubernetes Operators leitet auch ein automatisiertes Update von Matomo ein. Zusätzlich bieten Kubernetes Operatoren die Möglichkeit, die Art der Installation dynamisch auf das Lastprofil anzupassen.

Wir bei Glasskube haben einen Kubernetes Operator für Matomo entwickelt. Dieser kann auch bereits ausprobiert werden.

Wenn bereits ein Kubernetes Cluster vorhanden und kubectl installiert ist, muss für die Installation von Matomo das Git-Repository github.com/glasskube/operator geklont werden.

git clone git@github.com:glasskube/operator.git

Das Skript deploy.sh installiert die benötigten Dependencies und Custom-Ressource-Definitionen.

# Cluster-wide deployment of version X.Y.Z (or latest)
# of the Glasskube operator 
deploy/deploy.sh -v latest

Sobald die Installation des Operators abgeschlossen ist, kann nun Matomo installiert werden. Dazu muss folgende Custom-Resource installiert werden:

Wichtig Es muss ein DNS Eintrag auf den LoadBalancer bzw. den Ingress Host gesetzt werden. SSL-Zertifikate werden automatisch vom LoadBalancer bzw. cert-manager generiert, wenn ein ClusterIssuer konfiguriert ist.

Matomo.yaml

apiVersion: "glasskube.eu/v1alpha1"
kind: Matomo
metadata:
  name: matomo
  namespace: matomo
spec:
  host: matomo.hostname.tld # hostname
kubectl apply -f Matomo.yaml

Nun ist die Installation abgeschlossen. Updates des Kubernetes Operators werden automatisiert Matomo updaten.

Screencast

Fazit

Matomo kann auf verschiedene Arten in einem Kubernetes Cluster installiert werden. Eine Installation mittels des Docker-Images ist hilfreich, um sich näher mit Kubernetes zu beschäftigen und zu lernen. Eine Installation via Helm hilft schneller die benötigten Ressourcen zu deployen. Ein Kubernetes Operator unterstützt den Betrieb von Matomo im Autopilot-Modus.

Glasskube Operator on GitHub

Unsere Lösungen für zuverlässige und skalierbare Infrastruktur

Skalieren Sie Ihre IT-Infrastruktur mühelos und betreiben Sie Ihre Anwendungen schnell und sicher mit unseren cloudbasierten Technologielösungen.

Testen Sie Glasskube kostenlos

Ihre Cloud Native Experten für zuverlässe IT-Infrastrukturlösungen und den automatisieren Betrieb von Open Source tools.