From d3cdd77cc682a58c57bd588ea2419915d3cabc7e Mon Sep 17 00:00:00 2001 From: Richard Tomik Date: Wed, 17 Dec 2025 16:14:10 +0100 Subject: [PATCH] added support for using existing pvc --- charts/paperless-ngx/Chart.yaml | 4 +-- charts/paperless-ngx/readme.md | 35 +++++++++++++++++++ .../paperless-ngx/templates/deployment.yaml | 8 ++--- charts/paperless-ngx/templates/pvc.yaml | 8 ++--- charts/paperless-ngx/values.yaml | 4 +++ 5 files changed, 49 insertions(+), 10 deletions(-) diff --git a/charts/paperless-ngx/Chart.yaml b/charts/paperless-ngx/Chart.yaml index be23eda..c81b1e9 100644 --- a/charts/paperless-ngx/Chart.yaml +++ b/charts/paperless-ngx/Chart.yaml @@ -2,11 +2,11 @@ apiVersion: v2 name: paperless-ngx description: Paperless-ngx helm chart for Kubernetes type: application -version: 0.0.2 +version: 0.0.3 appVersion: "latest" maintainers: - name: Richard Tomik - email: no@m.com + email: richard.tomik@proton.me keywords: - productivity - document-management diff --git a/charts/paperless-ngx/readme.md b/charts/paperless-ngx/readme.md index b86359d..bb50312 100644 --- a/charts/paperless-ngx/readme.md +++ b/charts/paperless-ngx/readme.md @@ -127,12 +127,16 @@ The following table lists the configurable parameters and their default values. | Name | Description | Value | |----------------------------------------|--------------------------------------------------------------------|---------------------| | `persistence.data.enabled` | Enable persistence for data directory | `true` | +| `persistence.data.existingClaim` | Use an existing PVC for data directory | `""` | | `persistence.data.size` | Size of data PVC | `1Gi` | | `persistence.media.enabled` | Enable persistence for media directory | `true` | +| `persistence.media.existingClaim` | Use an existing PVC for media directory | `""` | | `persistence.media.size` | Size of media PVC | `10Gi` | | `persistence.consume.enabled` | Enable persistence for consume directory | `true` | +| `persistence.consume.existingClaim` | Use an existing PVC for consume directory | `""` | | `persistence.consume.size` | Size of consume PVC | `5Gi` | | `persistence.export.enabled` | Enable persistence for export directory | `true` | +| `persistence.export.existingClaim` | Use an existing PVC for export directory | `""` | | `persistence.export.size` | Size of export PVC | `1Gi` | ### Service Parameters @@ -287,6 +291,37 @@ Paperless-ngx uses several directories: All directories can be configured with separate PVCs and storage classes. +### Using Existing PVCs + +The chart supports using existing PersistentVolumeClaims instead of creating new ones. This is useful for: +- Migrating from an existing Paperless-ngx deployment +- Using pre-provisioned storage with specific settings +- Sharing volumes across deployments + +To use an existing PVC, specify the `existingClaim` parameter for the relevant volume: + +```yaml +persistence: + data: + enabled: true + existingClaim: "my-existing-data-pvc" + media: + enabled: true + existingClaim: "my-existing-media-pvc" + export: + enabled: true + existingClaim: "" # Will create new PVC + consume: + enabled: true + existingClaim: "" # Will create new PVC +``` + +When `existingClaim` is specified: +- The chart will **NOT** create a new PVC +- The specified PVC must already exist in the same namespace +- `storageClass`, `size`, and `accessMode` parameters are ignored for that volume +- You can mix existing and new PVCs (some volumes with `existingClaim`, others without) + ## Uninstalling the Chart To uninstall/delete the `paperless-ngx` deployment: diff --git a/charts/paperless-ngx/templates/deployment.yaml b/charts/paperless-ngx/templates/deployment.yaml index 12f8e17..7dbe03d 100644 --- a/charts/paperless-ngx/templates/deployment.yaml +++ b/charts/paperless-ngx/templates/deployment.yaml @@ -324,7 +324,7 @@ spec: {{- if .Values.persistence.data.enabled }} - name: data persistentVolumeClaim: - claimName: {{ include "paperless-ngx.fullname" . }}-data + claimName: {{ if .Values.persistence.data.existingClaim }}{{ .Values.persistence.data.existingClaim }}{{ else }}{{ include "paperless-ngx.fullname" . }}-data{{ end }} {{- else }} - name: data emptyDir: {} @@ -332,7 +332,7 @@ spec: {{- if .Values.persistence.media.enabled }} - name: media persistentVolumeClaim: - claimName: {{ include "paperless-ngx.fullname" . }}-media + claimName: {{ if .Values.persistence.media.existingClaim }}{{ .Values.persistence.media.existingClaim }}{{ else }}{{ include "paperless-ngx.fullname" . }}-media{{ end }} {{- else }} - name: media emptyDir: {} @@ -340,7 +340,7 @@ spec: {{- if .Values.persistence.export.enabled }} - name: export persistentVolumeClaim: - claimName: {{ include "paperless-ngx.fullname" . }}-export + claimName: {{ if .Values.persistence.export.existingClaim }}{{ .Values.persistence.export.existingClaim }}{{ else }}{{ include "paperless-ngx.fullname" . }}-export{{ end }} {{- else }} - name: export emptyDir: {} @@ -348,7 +348,7 @@ spec: {{- if .Values.persistence.consume.enabled }} - name: consume persistentVolumeClaim: - claimName: {{ include "paperless-ngx.fullname" . }}-consume + claimName: {{ if .Values.persistence.consume.existingClaim }}{{ .Values.persistence.consume.existingClaim }}{{ else }}{{ include "paperless-ngx.fullname" . }}-consume{{ end }} {{- else }} - name: consume emptyDir: {} diff --git a/charts/paperless-ngx/templates/pvc.yaml b/charts/paperless-ngx/templates/pvc.yaml index 528c4b1..e75c7a9 100644 --- a/charts/paperless-ngx/templates/pvc.yaml +++ b/charts/paperless-ngx/templates/pvc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.persistence.data.enabled }} +{{- if and .Values.persistence.data.enabled (not .Values.persistence.data.existingClaim) }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -21,7 +21,7 @@ spec: --- {{- end }} -{{- if .Values.persistence.media.enabled }} +{{- if and .Values.persistence.media.enabled (not .Values.persistence.media.existingClaim) }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -44,7 +44,7 @@ spec: --- {{- end }} -{{- if .Values.persistence.export.enabled }} +{{- if and .Values.persistence.export.enabled (not .Values.persistence.export.existingClaim) }} apiVersion: v1 kind: PersistentVolumeClaim metadata: @@ -67,7 +67,7 @@ spec: --- {{- end }} -{{- if .Values.persistence.consume.enabled }} +{{- if and .Values.persistence.consume.enabled (not .Values.persistence.consume.existingClaim) }} apiVersion: v1 kind: PersistentVolumeClaim metadata: diff --git a/charts/paperless-ngx/values.yaml b/charts/paperless-ngx/values.yaml index b87893f..a717bbf 100644 --- a/charts/paperless-ngx/values.yaml +++ b/charts/paperless-ngx/values.yaml @@ -65,6 +65,7 @@ persistence: # Paperless data directory (search index, classification model, etc.) data: enabled: true + existingClaim: "" storageClass: "" accessMode: ReadWriteOnce size: 1Gi @@ -72,6 +73,7 @@ persistence: # Paperless media directory (documents and thumbnails) media: enabled: true + existingClaim: "" storageClass: "" accessMode: ReadWriteOnce size: 10Gi @@ -79,6 +81,7 @@ persistence: # Export directory (for exporting documents) export: enabled: true + existingClaim: "" storageClass: "" accessMode: ReadWriteOnce size: 1Gi @@ -86,6 +89,7 @@ persistence: # Consume directory (for importing documents) consume: enabled: true + existingClaim: "" storageClass: "" accessMode: ReadWriteOnce size: 5Gi