apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "common.names.fullname" . }} labels: {{- include "common.labels.standard" . | nindent 4 }} {{- if .Values.commonLabels }} {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} {{- end }} {{- if .Values.commonAnnotations }} annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} {{- end }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} template: metadata: {{ if .Values.podAnnotations }} annotations: {{- toYaml .Values.podAnnotations | nindent 8 }} {{ end }} labels: {{- include "common.labels.standard" . | nindent 8 }} spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} args: - "--mail-directory" - "{{ .Values.persistence.mountPath }}" {{- if .Values.extraArgs }} {{- range .Values.extraArgs }} - {{ . | quote }} {{- end }} {{- end }} volumeMounts: - name: data mountPath: {{ .Values.persistence.mountPath }} ports: - name: http containerPort: 1080 protocol: TCP - name: smtp containerPort: 1025 protocol: TCP livenessProbe: httpGet: path: /healthz port: http readinessProbe: httpGet: path: /healthz port: http securityContext: runAsUser: 1000 runAsGroup: 1000 resources: {{- toYaml .Values.resources | nindent 12 }} volumes: - name: data {{- if and (.Values.persistence.enabled) }} persistentVolumeClaim: claimName: {{ include "common.names.fullname" . }} {{- else }} emptyDir: {} {{- end }} nodeSelector: {{- toYaml .Values.nodeSelector | nindent 8 }} affinity: {{- toYaml .Values.affinity | nindent 8 }} tolerations: {{- toYaml .Values.tolerations | nindent 8 }}