This is just initial effort to run maddy within Kubernetes cluster. We have used Deployment resource which has some downsides but at least this chart will allow you to install maddy relatively easily on your Kubernetes cluster. We have considered StatefulSet and DaemonSet but such solutions would require much more configuration and in casae of DaemonSet also a TCP load balancer in front of the nodes.
In order to run maddy properly, you need to have TLS secret under name maddy present in the cluster. If you have commercial certificate, you can create it by the following command:
kubectl create secret tls maddy --cert=fullchain.pem --key=privkey.pem
If you use cert-manager, just create the secret under name maddy.
Default for this chart is 1 replica of maddy. If you try to increase this, you will probably get an error because of the busy ports 25, 143, 587, etc. We do not support this feature at the moment, so please use just 1 replica. Like said at the beginning of this document, multiple replicas would probably require to switch do DaemonSet which would further require to have TCP load balancer and shared storage between all replicas. This is not supported by this chart, sorry. This chart is used on one node cluster and then installation is straight forward, like described bellow, but if you have multiple node cluster, please use taints and tolerations to select the desired node. This chart supports tolerations to be set.
Key | Type | Default | Description |
---|---|---|---|
affinity | object | {} |
|
fullnameOverride | string | "" |
|
image.pullPolicy | string | "IfNotPresent" |
|
image.repository | string | "foxcpp/maddy" |
|
image.tag | string | "" |
|
imagePullSecrets | list | [] |
|
nameOverride | string | "" |
|
nodeSelector | object | {} |
|
persistence.accessMode | string | "ReadWriteOnce" |
|
persistence.annotations | object | {} |
|
persistence.enabled | bool | false |
|
persistence.path | string | "/data" |
|
persistence.size | string | "128Mi" |
|
podAnnotations | object | {} |
|
podSecurityContext | object | {} |
|
replicaCount | int | 1 |
|
resources | object | {} |
|
securityContext | object | {} |
|
service.type | string | "NodePort" |
|
serviceAccount.annotations | object | {} |
|
serviceAccount.create | bool | true |
|
serviceAccount.name | string | "" |
|
tolerations | list | [] |
helm upgrade --install maddy ./chart --set service.externapIPs[0]=1.2.3.4
1.2.3.4 is your public IP of the node.
Feel free to tweak files/maddy.conf and files/aliases according to your needs.