deploy-templates/mailu/templates/front.yaml (299 lines of code) (raw):

# This file is derived from https://github.com/Mailu/Mailu/blob/master/docs/kubernetes/mailu/front.yaml {{- $clusterDomain := default "cluster.local" .Values.clusterDomain}} apiVersion: apps/v1 kind: {{ required "front.controller.kind" .Values.front.controller.kind }} metadata: name: {{ include "mailu.fullname" . }}-front spec: selector: matchLabels: app: {{ include "mailu.fullname" . }} component: front {{- if eq .Values.front.controller.kind "Deployment" }} replicas: 1 strategy: {{- else if eq .Values.front.controller.kind "DaemonSet" }} updateStrategy: {{- end }} type: RollingUpdate rollingUpdate: maxUnavailable: 1 {{- if eq .Values.front.controller.kind "Deployment" }} maxSurge: 0 {{- end }} template: metadata: labels: app: {{ include "mailu.fullname" . }} component: front spec: serviceAccount: {{ include "mailu.serviceAccountName" . }} securityContext: runAsUser: 0 {{- with (.Values.front.nodeSelector | default .Values.nodeSelector) }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} containers: - name: front image: {{ template "imageRegistry" . -}} {{ .Values.front.image.repository }}:{{ default .Values.mailuVersion .Values.front.image.tag }} imagePullPolicy: Always # volumeMounts: # - name: certs # mountPath: /certs # {{- if .Values.timezone }} # - name: zoneinfo # mountPath: /usr/share/zoneinfo # readOnly: true # - name: zoneinfo # subPath: {{ .Values.timezone }} # mountPath: /etc/localtime # readOnly: true # {{- end }} env: - name: LOG_LEVEL value: {{ default .Values.logLevel .Values.front.logLevel }} - name: KUBERNETES_INGRESS value: "{{ .Values.ingress.externalIngress }}" - name: TLS_FLAVOR value: {{ default "cert" .Values.ingress.tlsFlavor }} - name: HOSTNAMES value: "mail.{{ .Values.dnsWildcard }}" - name: ADMIN_ADDRESS value: {{ include "mailu.fullname" . }}-admin.{{ .Release.Namespace }}.svc.{{ $clusterDomain }} - name: ANTISPAM_WEBUI_ADDRESS value: {{ include "mailu.fullname" . }}-rspamd.{{ .Release.Namespace }}.svc.{{ $clusterDomain }}:11334 {{- if .Values.roundcube.enabled }} - name: WEBMAIL value: roundcube - name: WEBMAIL_ADDRESS value: {{ include "mailu.fullname" . }}-roundcube.{{ .Release.Namespace }}.svc.{{ $clusterDomain }} {{- else }} - name: WEBMAIL value: none - name: WEBMAIL_ADDRESS value: localhost {{- end }} - name: MESSAGE_SIZE_LIMIT value: "{{ mul .Values.mail.messageSizeLimitInMegabytes (mul 1024 1024) }}" - name: WEB_WEBMAIL value: "/" - name: WEBDAV value: none - name: WEBDAV_ADDRESS value: localhost - name: ADMIN value: "true" - name: WEB_ADMIN value: "/admin" {{- if .Values.webdav.enabled }} - name: WEBDAV value: radicale - name: WEBDAV_ADDRESS value: {{ include "mailu.fullname" . }}-webdav.{{ .Release.Namespace }}.svc.{{ $clusterDomain }}:5232 {{- end }} - name: SUBNET value: {{ .Values.subnet }} ports: - name: pop3 protocol: TCP containerPort: 110 {{- if .Values.front.hostPort.enabled }} hostPort: 110 {{- end}} - name: pop3s protocol: TCP containerPort: 995 {{- if .Values.front.hostPort.enabled }} hostPort: 995 {{- end}} - name: imap protocol: TCP containerPort: 143 {{- if .Values.front.hostPort.enabled }} hostPort: 143 {{- end}} - name: imaps protocol: TCP containerPort: 993 {{- if .Values.front.hostPort.enabled }} hostPort: 993 {{- end}} - name: smtp protocol: TCP containerPort: 25 {{- if .Values.front.hostPort.enabled }} hostPort: 25 {{- end}} - name: smtps protocol: TCP containerPort: 465 {{- if .Values.front.hostPort.enabled }} hostPort: 465 {{- end}} - name: smtp-auth protocol: TCP containerPort: 10025 - name: imap-auth protocol: TCP containerPort: 10143 - name: smtpd protocol: TCP containerPort: 587 {{- if .Values.front.hostPort.enabled }} hostPort: 587 {{- end}} - name: auth containerPort: 8000 protocol: TCP - name: http containerPort: 80 protocol: TCP {{ if not .Values.ingress.externalIngress }} - name: https containerPort: 443 protocol: TCP {{end}} {{- with .Values.front.resources }} resources: {{- .|toYaml|nindent 10}} {{- end }} {{- if .Values.front.startupProbe}} startupProbe: httpGet: path: /health port: http periodSeconds: {{ default 10 .Values.front.startupProbe.periodSeconds }} failureThreshold: {{ default 30 .Values.front.startupProbe.failureThreshold }} timeoutSeconds: {{ default 5 .Values.front.startupProbe.timeoutSeconds }} {{- end }} {{- if .Values.front.livenessProbe}} livenessProbe: httpGet: path: /health port: http periodSeconds: {{ default 10 .Values.front.livenessProbe.periodSeconds }} failureThreshold: {{ default 3 .Values.front.livenessProbe.failureThreshold }} timeoutSeconds: {{ default 5 .Values.front.livenessProbe.timeoutSeconds }} {{- end }} {{- if .Values.front.readinessProbe}} readinessProbe: httpGet: path: /health port: http periodSeconds: {{ default 10 .Values.front.readinessProbe.periodSeconds }} failureThreshold: {{ default 1 .Values.front.readinessProbe.failureThreshold }} timeoutSeconds: {{ default 5 .Values.front.readinessProbe.timeoutSeconds }} {{- end }} # volumes: # - name: certs # secret: # items: # - key: tls.crt # path: cert.pem # - key: tls.key # path: key.pem # secretName: {{ include "mailu.fullname" . }}-certificates # {{- if .Values.timezone }} # - name: zoneinfo # hostPath: # path: /usr/share/zoneinfo # type: Directory # {{- end }} restartPolicy: Always terminationGracePeriodSeconds: 60 --- apiVersion: v1 kind: Service metadata: name: {{ include "mailu.fullname" . }}-front labels: app: {{ include "mailu.fullname" . }} component: front spec: selector: app: {{ include "mailu.fullname" . }} component: front ports: - name: pop3 port: 110 protocol: TCP - name: pop3s port: 995 protocol: TCP - name: imap port: 143 protocol: TCP - name: imaps port: 993 protocol: TCP - name: smtp port: 25 protocol: TCP - name: smtps port: 465 protocol: TCP - name: smtpd port: 587 protocol: TCP - name: smtp-auth port: 10025 protocol: TCP - name: imap-auth port: 10143 protocol: TCP - name: http port: 80 protocol: TCP {{ if not .Values.ingress.externalIngress }} - name: https port: 443 protocol: TCP {{end}} --- {{- with .Values.front.externalService }} {{- if .enabled }} apiVersion: v1 kind: Service metadata: name: {{ include "mailu.fullname" $ }}-front-ext labels: app: {{ include "mailu.fullname" $ }} component: front {{- with .annotations }} annotations: {{ . | toYaml | indent 4 }} {{- end }} spec: type: {{ .type | default "ClusterIP" }} externalTrafficPolicy: {{ .externalTrafficPolicy | default "Local" }} {{- if .loadBalancerIP }} loadBalancerIP: {{ .loadBalancerIP }} {{- end }} selector: app: {{ include "mailu.fullname" $ }} component: front ports: {{- with .pop3 }} {{- if .pop3 }} - name: pop3 port: 110 protocol: TCP {{- end }} {{- if .pop3s }} - name: pop3s port: 995 protocol: TCP {{- end }} {{- end }} {{- with .imap }} {{- if .imap }} - name: imap port: 143 protocol: TCP {{- end }} {{- if .imaps }} - name: imaps port: 993 protocol: TCP {{- end }} {{- end }} {{- with .smtp }} {{- if .smtp }} - name: smtp port: 25 protocol: TCP {{- end }} {{- if .smtps }} - name: smtps port: 465 protocol: TCP {{- end }} {{- if .submission }} - name: smtpd port: 587 protocol: TCP {{- end }} {{- end }} {{- end }} {{- end }}