Der Vergleich zwischen: Docker Images, Helm Charts und einem Kubernetes Operator.
Matomo ist eine Open-Source Web-Analytics-Plattform und besteht aus folgenden Komponenten:
github.com/matomo-org/matomo
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.
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:
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 vomLoadBalancer
bzw.cert-manager
generiert, wenn einClusterIssuer
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.
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.
Skalieren Sie Ihre IT-Infrastruktur mühelos und betreiben Sie Ihre Anwendungen schnell und sicher mit unseren cloudbasierten Technologielösungen.
Ihre Cloud Native Experten für zuverlässe IT-Infrastrukturlösungen und den automatisieren Betrieb von Open Source tools.