apiVersion: apps/v1 kind: Deployment metadata: name: {{ taskserv.name }} namespace: {{ taskserv.namespace }} labels: app.kubernetes.io/name: {{ taskserv.name }} app.kubernetes.io/managed-by: provisioning spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: {{ taskserv.name }} template: metadata: labels: app.kubernetes.io/name: {{ taskserv.name }} app.kubernetes.io/managed-by: provisioning spec: nodeSelector: kubernetes.io/hostname: {{ taskserv.node }} terminationGracePeriodSeconds: 60 securityContext: fsGroup: 1000 runAsUser: 1000 runAsGroup: 1000 containers: - name: {{ taskserv.name }} image: {{ taskserv.image }} args: ["--config", "{{ taskserv.config_mount }}/config.json"] ports: - containerPort: {{ taskserv.smtp_port }} name: smtp protocol: TCP - containerPort: {{ taskserv.submission_port }} name: submission protocol: TCP - containerPort: {{ taskserv.smtps_port }} name: smtps protocol: TCP - containerPort: {{ taskserv.imaps_port }} name: imaps protocol: TCP - containerPort: {{ taskserv.http_port }} name: http protocol: TCP env: - name: DATA_DIR value: "{{ taskserv.data_dir }}" envFrom: - secretRef: name: {{ taskserv.name }}-credentials volumeMounts: - name: data mountPath: {{ taskserv.data_dir }} - name: config mountPath: {{ taskserv.config_mount }}/config.json subPath: config.json readOnly: true - name: tls mountPath: {{ taskserv.tls_mount_path }} readOnly: true readinessProbe: tcpSocket: port: {{ taskserv.smtp_port }} initialDelaySeconds: 15 periodSeconds: 10 livenessProbe: tcpSocket: port: {{ taskserv.smtp_port }} initialDelaySeconds: 60 periodSeconds: 20 resources: requests: cpu: "100m" memory: "256Mi" limits: memory: "1Gi" volumes: - name: data persistentVolumeClaim: claimName: {{ taskserv.name }}-data - name: config configMap: name: {{ taskserv.name }}-config - name: tls secret: secretName: {{ taskserv.tls_secret }}