We provide a comparison between: Docker Images, Helm Charts and a Kubernetes Operator.
Matomo is an open source web analytics platform that consists of the following components:
Matomo publishes Docker Images on GitHub (
which allow easy local installation. Using
volumes, the initial configuration can be persisted.
Warning: When upgrading Matomo, the initial configuration will be overwritten and Matomo must be reconfigured again.
To solve this problem, it is necessary to check at each container startup if a database migration or initialization is
necessary. In Kubernetes, this task can be handled by an
the Matomo Plugin ExtraTools this action can be performed from the command
However, deploying the Matomo Docker image on Kubernetes is still quite laborious, as several components have to be configured manually (deployment, service, ingress).
In addition, an external (managed) database must be used and linked to the manual installation.
However, these Helm charts still must be configured by the user. Often it must be defined in which configuration Matomo should be installed (e.g. with or without Redis). Before every update it still needs to be checked, whether the new images are still compatible with the existing volumes and data structure. A major upgrade of database versions is often not possible via Helm-Charts.
In summary, it can be said that Helm-Charts are a quick way to install Matomo, but in the long run it can lead to a significant effort.
Step-by-step instructions can be found here:
Another option for automatic installation and operation for Matomo on Kubernetes is a Kubernetes Operator. It not only can adjust the initial installation to the cloud infrastructure and needs of the customer, but also takes care of future updates. If needed an update of the Kubernetes Operator also initiates an automated update of Matomo. Additionally, Kubernetes Operators offer the ability to dynamically adjust the type of installation based on the load profile.
We at Glasskube have developed a Kubernetes operator for Matomo, which can be already previewed:
If a Kubernetes cluster already exists and
kubectl is installed, you need to clone our
github.com/glasskube/operator as first step for the Matomo
git clone firstname.lastname@example.org:glasskube/operator.git
deploy.sh installs the required
dependencies and custom resource definitions.
# Cluster-wide deployment of version X.Y.Z (or latest) # of the Glasskube operator deploy/deploy.sh -v latest
Once the installation of the operator is complete, Matomo can now be installed. For this purpose the following custom resource must be installed:
Important A DNS entry must be set on the
Ingress Host. SSL certificates are automatically generated by
apiVersion: "glasskube.eu/v1alpha1" kind: Matomo metadata: name: matomo namespace: matomo spec: host: matomo.hostname.tld # hostname
kubectl apply -f Matomo.yaml
Now the installation is complete. Updates to the Kubernetes operator will automatically update Matomo.
Matomo can be installed in a Kubernetes cluster in several ways. An installation using the Docker image is helpful to learn more about Kubernetes without too many new technologies. An installation via Helm helps to deploy the needed resources much faster. A Kubernetes operator supports running Matomo in autopilot mode.
Easily and scale your IT infrastructure while deploying applications quickly and securely with our cloud native technology solutions.