| Matthias Andreas Benkard | 3cf43e3 | 2026-11-05 22:28:28 +0100 | [diff] [blame] | 1 | --- |
| 2 | apiVersion: apps/v1 |
| 3 | kind: Deployment |
| 4 | metadata: |
| 5 | name: mailcow |
| 6 | namespace: mulk |
| 7 | labels: |
| 8 | name: mailcow |
| 9 | k8s-app: mailcow |
| 10 | |
| 11 | spec: |
| 12 | replicas: 1 |
| 13 | |
| 14 | strategy: |
| 15 | rollingUpdate: |
| 16 | maxSurge: 1 |
| 17 | maxUnavailable: 1 |
| 18 | |
| 19 | selector: |
| 20 | matchLabels: |
| 21 | k8s-app: mailcow |
| 22 | name: mailcow |
| 23 | |
| 24 | template: |
| 25 | metadata: |
| 26 | labels: |
| 27 | name: mailcow |
| 28 | k8s-app: mailcow |
| 29 | |
| 30 | spec: |
| 31 | imagePullSecrets: |
| 32 | - name: portus-token |
| 33 | |
| 34 | runtimeClassName: kata |
| 35 | |
| 36 | containers: |
| 37 | - name: master |
| 38 | image: docker.benkard.de/mulk/mailcow:latest |
| 39 | |
| 40 | securityContext: |
| 41 | # In a Kata container, this only gives the container full |
| 42 | # access to the guest VM rather than the host. (To ensure |
| 43 | # this, it is important to set privileged_without_host_devices |
| 44 | # = true in the [plugins.cri.containerd.runtimes.kata] section |
| 45 | # of containerd's config.toml.) |
| 46 | privileged: true |
| 47 | |
| 48 | env: |
| 49 | - {name: COMPOSE_HTTP_TIMEOUT, value: "600"} |
| 50 | - {name: TZ, value: Europe/Vienna} |
| 51 | - {name: DBNAME, value: mailcow} |
| 52 | - {name: DBUSER, value: mailcow} |
| 53 | - {name: DBPASS, value: REDACTED} |
| 54 | - {name: MAILCOW_HOSTNAME, value: mail.benkard.de} |
| 55 | - {name: ADDITIONAL_SAN, value: ""} |
| 56 | |
| 57 | ports: |
| 58 | - name: http |
| 59 | containerPort: 80 |
| 60 | - name: smtp |
| 61 | hostPort: 25 |
| 62 | containerPort: 25 |
| 63 | - name: pop |
| 64 | hostPort: 110 |
| 65 | containerPort: 110 |
| 66 | - name: imap |
| 67 | hostPort: 143 |
| 68 | containerPort: 143 |
| 69 | - name: smtps |
| 70 | hostPort: 465 |
| 71 | containerPort: 465 |
| 72 | - name: submission |
| 73 | hostPort: 587 |
| 74 | containerPort: 587 |
| 75 | - name: imaps |
| 76 | hostPort: 993 |
| 77 | containerPort: 993 |
| 78 | - name: pops |
| 79 | hostPort: 995 |
| 80 | containerPort: 995 |
| 81 | - name: sieve |
| 82 | hostPort: 4190 |
| 83 | containerPort: 4190 |
| 84 | - name: doveadm |
| 85 | hostPort: 19991 |
| 86 | containerPort: 12345 |
| 87 | |
| 88 | volumeMounts: |
| 89 | # Configuration data. |
| 90 | - name: assets |
| 91 | subPath: ssl |
| 92 | mountPath: /mailcow-dockerized/data/assets/ssl |
| 93 | - name: config |
| 94 | mountPath: /mailcow-dockerized/data/conf |
| 95 | - name: secrets |
| 96 | subPath: mailcow.conf |
| 97 | mountPath: /mailcow-dockerized/mailcow.conf |
| 98 | |
| 99 | # State. |
| 100 | - name: crypt-data |
| 101 | mountPath: /vol/crypt-data |
| 102 | - name: postfix-data |
| 103 | mountPath: /vol/postfix-data |
| 104 | - name: redis-data |
| 105 | mountPath: /vol/redis-data |
| 106 | - name: rspamd-data |
| 107 | mountPath: /vol/rspamd-data |
| 108 | - name: solr-data |
| 109 | mountPath: /vol/solr-data |
| 110 | - name: sogo-web |
| 111 | mountPath: /vol/sogo-web |
| 112 | - name: sogo-userdata-backup |
| 113 | mountPath: /vol/sogo-userdata-backup |
| 114 | - name: vmail |
| 115 | mountPath: /vol/vmail |
| 116 | - name: vmail-index |
| 117 | mountPath: /vol/vmail-index |
| 118 | - name: web-data |
| 119 | mountPath: /vol/web-data |
| 120 | #- name: docker-data |
| 121 | # subPath: vfs |
| 122 | # mountPath: /var/lib/docker/vfs |
| 123 | #- name: docker-data |
| 124 | # subPath: image |
| 125 | # mountPath: /var/lib/docker/image |
| 126 | #- name: docker-data |
| 127 | # subPath: overlay2 |
| 128 | # mountPath: /var/lib/docker/overlay2 |
| 129 | #- name: docker-data |
| 130 | # mountPath: /var/lib/docker |
| 131 | - name: docker-data |
| 132 | mountPath: /vol/docker-data |
| 133 | |
| 134 | volumes: |
| 135 | - name: assets |
| 136 | persistentVolumeClaim: |
| 137 | claimName: mailcow-assets |
| 138 | - name: config |
| 139 | persistentVolumeClaim: |
| 140 | claimName: mailcow-config-v2 |
| 141 | - name: crypt-data |
| 142 | persistentVolumeClaim: |
| 143 | claimName: mailcow-crypt |
| 144 | - name: postfix-data |
| 145 | persistentVolumeClaim: |
| 146 | claimName: mailcow-postfix |
| 147 | - name: redis-data |
| 148 | persistentVolumeClaim: |
| 149 | claimName: mailcow-redis |
| 150 | - name: rspamd-data |
| 151 | persistentVolumeClaim: |
| 152 | claimName: mailcow-rspamd |
| 153 | - name: solr-data |
| 154 | persistentVolumeClaim: |
| 155 | claimName: mailcow-solr |
| 156 | - name: sogo-web |
| 157 | persistentVolumeClaim: |
| 158 | claimName: mailcow-sogo-web |
| 159 | - name: sogo-userdata-backup |
| 160 | persistentVolumeClaim: |
| 161 | claimName: mailcow-sogo-userdata-backup |
| 162 | - name: vmail |
| 163 | persistentVolumeClaim: |
| 164 | claimName: mailcow-vmail |
| 165 | - name: vmail-index |
| 166 | persistentVolumeClaim: |
| 167 | claimName: mailcow-vmail-index |
| 168 | - name: web-data |
| 169 | persistentVolumeClaim: |
| 170 | claimName: mailcow-web |
| 171 | - name: docker-data |
| 172 | persistentVolumeClaim: |
| 173 | claimName: mailcow-docker |
| 174 | - name: secrets |
| 175 | secret: |
| 176 | secretName: mailcow-secrets |