apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  template:
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 100
              preference:
                matchExpressions:
                  - key: kubernetes.io/hostname
                    operator: In
                    values:
                      - arthur
      containers:
        - name: paperless
          image: ghcr.io/paperless-ngx/paperless-ngx:2.14.7
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: consume-volume
              mountPath: /usr/src/paperless/consume
              subPath: consume
            - name: data-volume
              mountPath: /usr/src/paperless/data
              subPath: data/data
            - name: data-volume
              mountPath: /usr/src/paperless/media
              subPath: data/media
            - name: data-volume
              mountPath: /usr/src/paperless/export
              subPath: data/export
          envFrom:
            - configMapRef:
                name: paperless-config
          env:
            - name: PAPERLESS_DBPASS
              valueFrom:
                secretKeyRef:
                  name: paperless-secrets
                  key: PAPERLESS_DBPASSWORD
            - name: PAPERLESS_SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: paperless-secrets
                  key: PAPERLESS_SECRET_KEY
            - name: PAPERLESS_EMAIL_HOST_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: smtp-secrets
                  key: SMTP_PASSWORD
            - name: PAPERLESS_SOCIALACCOUNT_PROVIDERS
              valueFrom:
                secretKeyRef:
                  name: paperless-secrets
                  key: PAPERLESS_SOCIALACCOUNT_PROVIDERS
          ports:
            - containerPort: 8000
              name: paperless
              protocol: TCP
          livenessProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: paperless
            initialDelaySeconds: 60
            periodSeconds: 10
          readinessProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: paperless
            initialDelaySeconds: 30
            periodSeconds: 10
          startupProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: paperless
      volumes:
        - name: consume-volume
          persistentVolumeClaim:
            claimName: paperless-consume
        - name: data-volume
          persistentVolumeClaim:
            claimName: paperless-pvc