A helm-chart to deploy Postal on kubernetes.
This chart bootstraps a deployment of Postal, MariaDB and RabbitMQ on a Kubernetes cluster using the Helm package manager.
- Kubernetes 1.9
- PV provisioner support in the underlying infrastructure
- An ingress controller
- A functioning cert-manager for certificate management
To install the chart with the release name my-release
, add the linkyard helm charts repository:
helm repo add linkyard http://charts.linkyard.ch
and install the chart:
helm install --name my-release linkyard/postal
The command deploys postal on the Kubernetes cluster in the default confiugraiotn. The configuration section lists parameters that can be configured during installation.
Tip: List all releases using
helm list
To uninstall/delete the my-release
deployment:
helm delete my-release
The command removes all the Kubernetes components associated with the chart and deletes the release.
This chart pulls in stable/mariadb and stable/rabbitmq-ha as dependencies.
Please refer to the respective documentation for configuration parameters of those components.
If you want to override any of RabbitMQ's configuration parameters, make sure your values.yaml
contains a YAML node rabbitmq
with an anchor &rabbitmq
that is referenced in a rabbitmq-ha
node.
We do this, because referencing values of sub-charts with a dash in the name (i.e. rabbitmq-ha
)
can be difficult and dashes in chart names are discouraged by helm (helm/#4379).
Example:
rabbitmq: &rabbitmq
replicaCount: 3
rabbitmq-ha: *rabbitmq
We set the following default configuration parameters for MariaDB and RabbitMQ:
Parameter | Description | Default |
---|---|---|
mariadb.rootUser.password |
Password for the MariaDB root user. Change this from the default! | see values.yaml |
mariadb.replication.enabled |
Enable MariaDB replication | false |
mariadb.slave.replicas |
Number of MariaDB slave replicas | 0 |
mariadb.metrics.enabled |
Enable prometheus metrics | true |
rabbitmq.definitions.vhosts |
RabbitMQ vhosts definitions. Our default adds one for Postal. | see values.yaml |
rabbitmq.definitions.permissions |
RabbitMQ vhosts permissions. Our default adds permission to the /postal vhost for the postal user. |
see values.yaml |
rabbitmq.replicaCount |
Number of RabbitMQ replicas. | 1 |
rabbitmq.rabbitmqUsername |
Username for RabbitMQ. | postal |
rabbitmq.rabbitmqPassword |
Password for RabbitMQ. Change this from the default! | see values.yaml |
rabbitmq.managementPassword |
Password for RabbitMQ management operations. Change this from the default! | see values.yaml |
The following table lists the configurable parameters of the postal chart and their default values.
Parameter | Description | Default |
---|---|---|
postal.nameOverride |
override the name of the chart | `` |
postal.config |
A postal configuration yaml to apply on top of postal's default configuration. See Postal's default configuration for available options. | {} |
postal.image |
postal container image repository | linkyard/postal |
postal.imageTag |
postal container image tag | 1.0.0 |
postal.imagePullPolicy |
postal container image pull policy | Always |
postal.resources |
CPU/Memory resource requests/limits | {} |
postal.signingKey |
RSA private key in PEM format used for DKIM signing. Change this from the default! | see values.yaml |
postal.railsSecretKey |
The secret key for rails. Change this from the default! | see values.yaml |
postal.letsEncryptKey |
RSA private key in PEM format. Used by Postal to acquire and renew certificates for the click-tracking-server from Let's Encrypt. Change this from the default! | see values.yaml |
postal.smtpPassword |
Password for the SMTP server. Change this from the default! | see values.yaml |
postal.web.ingress.enabled |
if an ingress resource should be deployed for the web interface |
true |
postal.web.ingress.hostname |
public hostname for the web interface; this is a required value | `` |
postal.web.ingress.ingressClass |
ingress class to use | nginx |
postal.web.ingress.tlsEnabled |
enable TLS on the ingress | true |
postal.web.ingress.certManager.enabled |
enable management of the TLS secret with cert-manager | true |
postal.web.ingress.certManager.ingressClass |
ingress class to use for HTTP01 challenge | nginx |
postal.web.ingress.certManager.issuerName |
name of the cert-manager issuer; this is a required value | `` |
postal.web.ingress.certManager.issuerKind |
kind of the cert-manager issuer; this is a required value | `` |
postal.web.ingress.existingTlsSecret |
name of an existing TLS secret to use for the ingress (if cert-manager is not used); must be in the same namespace | `` |
postal.smtp.hostname |
public hostname of postal's SMTP server; this is a required value | `` |
postal.smtp.serviceType |
what kind of service the SMTP server is exposed as | LoadBalancer |
postal.smtp.certManager.enabled |
enable management of the TLS secret with cert-manager | true |
postal.smtp.certManager.ingressClass |
ingress class to use for HTTP01 challenge | nginx |
postal.smtp.certManager.issuerName |
name of the cert-manager issuer; this is a required value | `` |
postal.smtp.certManager.issuerKind |
kind of the cert-manager issuer; this is a required value | `` |
postal.smtp.ingress.existingTlsSecret |
name of an existing TLS secret to use for the SMTP server (if cert-manager is not used); must be in the same namespace | `` |