This Helm chart deploys Mautic version 7 on Kubernetes following the official Docker Compose architecture with separate web, cron, and worker components.
This chart deploys Mautic following the official multi-container architecture:
- Web: Serves the HTTP frontend (Apache + PHP)
- Cron: Runs scheduled tasks (segments, campaigns, emails)
- Worker: Processes background jobs asynchronously
All components share a common PersistentVolume for config, logs, and media files.
- Kubernetes 1.19+
- Helm 3.0+
- PV provisioner support in the underlying infrastructure
- ReadWriteMany storage class (if running multiple web replicas)
To install the chart with the release name mautic:
./install.shOr manually:
helm install mautic . --namespace mautic --create-namespaceIf you publish this chart to a Helm repository (for example via GitHub Pages or Artifact Hub), users can install it like this:
helm repo add mautic https://<your-domain>/mautic-chart
helm repo update
helm install mautic mautic/mautic --namespace mautic --create-namespaceTo uninstall/delete the mautic deployment:
./uninstall.shThis command removes all the Kubernetes components associated with the chart and deletes the release.
The following table lists the configurable parameters of the Mautic chart and their default values.
| Parameter | Description | Default |
|---|---|---|
web.replicaCount |
Number of web replicas | 1 |
cron.enabled |
Enable cron deployment | true |
cron.replicaCount |
Number of cron replicas | 1 |
worker.enabled |
Enable worker deployment | true |
worker.replicaCount |
Number of worker replicas | 1 |
image.repository |
Mautic image repository | mautic/mautic |
image.tag |
Mautic image tag | 7-apache |
image.pullPolicy |
Image pull policy | IfNotPresent |
service.type |
Kubernetes service type | ClusterIP |
service.port |
Kubernetes service port | 80 |
automountServiceAccountToken |
Automount service account token | false |
podSecurityContext |
Pod security context | {} |
containerSecurityContext |
Container security context | {} |
ingress.enabled |
Enable ingress controller resource | true |
ingress.annotations |
Ingress annotations | {} |
ingress.hosts |
Ingress hosts configuration | See values.yaml |
volume.enabled |
Enable persistent volume | true |
volume.spec.resources.requests.storage |
PVC storage request | 10Gi |
mariadb.enabled |
Deploy MariaDB StatefulSet | true |
mariadb.auth.database |
MariaDB database name | mautic |
mariadb.auth.username |
MariaDB username | mautic |
mariadb.auth.password |
MariaDB password | "" (auto-generated if empty) |
Specify each parameter using the --set key=value[,key=value] argument to helm install. For example:
helm install mautic . \
--namespace mautic \
--set mariadb.auth.password=secretpasswordAlternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example:
helm install mautic . --namespace mautic -f values.yamlThe Mautic image stores the application data at the /var/www/html path of the container.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
This chart deploys MariaDB using a StatefulSet with the official Bitnami MariaDB Docker image. The database is deployed in the same namespace and automatically configured for Mautic. You can configure MariaDB by setting values under the mariadb key in values.yaml. If you leave mariadb.auth.rootPassword or mariadb.auth.password empty, the chart generates random passwords in the MariaDB Secret.
To use an external database instead, set mariadb.enabled: false and configure MAUTIC_DB_HOST in extraEnvs.
For production, consider enabling stricter pod settings and requests/limits. Examples:
helm install mautic . \
--namespace mautic \
--set automountServiceAccountToken=false \
--set podSecurityContext.fsGroup=33 \
--set containerSecurityContext.allowPrivilegeEscalation=falseThis is the initial release of the custom Mautic Helm chart for version 7.