From 943e9ce8b3fc3e0ac83bd4d196e42f7ba4bb102f Mon Sep 17 00:00:00 2001 From: aggarwalakshun Date: Fri, 18 Apr 2025 05:24:47 +0530 Subject: [PATCH] feat: add paperless-ngx deployment, services, and persistent volume claims --- .../apps/paperless-ngx/paperless-ngx-db.yml | 28 +++++++++ .../apps/paperless-ngx/paperless-ngx-svc.yml | 29 +++++++++ cluster/apps/paperless-ngx/paperless-ngx.yml | 59 +++++++++++++++++++ cluster/apps/paperless-ngx/paperless-pvc.yml | 27 +++++++++ 4 files changed, 143 insertions(+) create mode 100644 cluster/apps/paperless-ngx/paperless-ngx-db.yml create mode 100644 cluster/apps/paperless-ngx/paperless-ngx-svc.yml create mode 100644 cluster/apps/paperless-ngx/paperless-ngx.yml create mode 100644 cluster/apps/paperless-ngx/paperless-pvc.yml diff --git a/cluster/apps/paperless-ngx/paperless-ngx-db.yml b/cluster/apps/paperless-ngx/paperless-ngx-db.yml new file mode 100644 index 0000000..e71779d --- /dev/null +++ b/cluster/apps/paperless-ngx/paperless-ngx-db.yml @@ -0,0 +1,28 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: paperless-ngx-db + namespace: default +spec: + selector: + matchLabels: + app: paperless-ngx-db + template: + metadata: + labels: + app: paperless-ngx-db + spec: + containers: + - name: paperless-ngx-db + image: docker.io/library/redis:7 + ports: + - containerPort: 6379 + volumeMounts: + - name: redis + mountPath: /data + volumes: + - name: redis + persistentVolumeClaim: + claimName: longhorn-paperless-redis + diff --git a/cluster/apps/paperless-ngx/paperless-ngx-svc.yml b/cluster/apps/paperless-ngx/paperless-ngx-svc.yml new file mode 100644 index 0000000..e46fbf5 --- /dev/null +++ b/cluster/apps/paperless-ngx/paperless-ngx-svc.yml @@ -0,0 +1,29 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: paperless-ngx-service + namespace: default +spec: + type: NodePort + selector: + app: paperless-ngx + ports: + - port: 8000 + targetPort: 8000 + nodePort: 8001 + protocol: TCP + +--- +apiVersion: v1 +kind: Service +metadata: + name: paperless-ngx-db-service + namespace: default +spec: + selector: + app: paperless-ngx-db + ports: + - protocol: TCP + port: 6379 + targetPort: 6379 diff --git a/cluster/apps/paperless-ngx/paperless-ngx.yml b/cluster/apps/paperless-ngx/paperless-ngx.yml new file mode 100644 index 0000000..6ff8ee8 --- /dev/null +++ b/cluster/apps/paperless-ngx/paperless-ngx.yml @@ -0,0 +1,59 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: paperless-ngx + namespace: default +spec: + selector: + matchLabels: + app: paperless-ngx + template: + metadata: + labels: + app: paperless-ngx + spec: + initContainers: + - name: wait-for-db + image: busybox + command: + - sh + - -c + - | + until nc -z -v -w30 paperless-ngx-db-service 6379; do + echo "Waiting for database to be ready..." + sleep 2 + done + containers: + - name: paperless-ngx + image: ghcr.io/paperless-ngx/paperless-ngx:2.15.1 + ports: + - containerPort: 8000 + env: + - name: PAPERLESS_REDIS + value: "redis://paperless-ngx-db-service:6379" + - name: PAPERLESS_URL + value: "https://ngx.akshun-lab.uk" + - name: PAPERLESS_CSRF_TRUSTED_ORIGINS + value: "https://*.akshun-lab.uk" + - name: PAPERLESS_CORS_ALLOWED_HOSTS + value: "https://ngx.akshun-lab.uk" + - name: PAPERLESS_TIME_ZONE + value: "Asia/Kolkata" + volumeMounts: + - name: data + mountPath: /usr/src/paperless/data + subPath: data + - name: data + mountPath: usr/src/paperless/media + subPath: media + - name: data + mountPath: /usr/src/paperless/export + subPath: export + - name: data + mountPath: /usr/src/paperless/consume + subPath: consume + volumes: + - name: data + persistentVolumeClaim: + claimName: longhorn-paperless-data diff --git a/cluster/apps/paperless-ngx/paperless-pvc.yml b/cluster/apps/paperless-ngx/paperless-pvc.yml new file mode 100644 index 0000000..4048099 --- /dev/null +++ b/cluster/apps/paperless-ngx/paperless-pvc.yml @@ -0,0 +1,27 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: longhorn-paperless-data + namespace: default +spec: + accessModes: + - ReadWriteMany + storageClassName: longhorn + resources: + requests: + storage: 1Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: longhorn-paperless-redis + namespace: default +spec: + accessModes: + - ReadWriteMany + storageClassName: longhorn + resources: + requests: + storage: 1Gi