Paperless-ngx chart: naming scheme, secret refs, pinned init images (conventions batch 3)
Batch-3 major PR for paperless-ngx (issue #32): - secrets.redisRef/databaseRef/paperlessRef -> redisSecretRef/ databaseSecretRef/paperlessSecretRef (consistent with the other SecretRef values in the same block); CI fixtures updated - TLS secret renamed to the standard tls-<release>-<chart>-ingress (domain no longer part of the name) - busybox init/cronjob image pinned via paperless.busybox.image values, default bumped 1.28 -> 1.38.0 - probes values-configurable (defaults unchanged, incl. the 600s startup budget); consume CronJob deliberately stays probe-less - ingress standard: ingress.className (default nginx) and ingress.annotations merge; domain/clusterIssuer stay required - additive paperless.env block rendered through tpl (value, secretKeyRef, configMapKeyRef forms) - disabled scripts ConfigMap renamed to ...-configmap; PVC names kept as documented naming-scheme exception (comments in the templates) - chart 8.0.1+up3.0.5 -> 9.0.0+up3.0.5 (breaking values changes)
This commit is contained in:
13 files changed
+93
-40
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
secrets:
|
secrets:
|
||||||
redisRef: op://ci/paperless-redis
|
redisSecretRef: op://ci/paperless-redis
|
||||||
databaseRef: op://ci/paperless-db
|
databaseSecretRef: op://ci/paperless-db
|
||||||
paperlessRef: op://ci/paperless
|
paperlessSecretRef: op://ci/paperless
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
domain: paperless.ci.local
|
domain: paperless.ci.local
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ icon: https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/dev/src-ui/s
|
|||||||
|
|
||||||
type: application
|
type: application
|
||||||
|
|
||||||
version: 8.0.1+up3.0.5
|
version: 9.0.0+up3.0.5
|
||||||
|
|
||||||
appVersion: 3.0.5
|
appVersion: 3.0.5
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ kind: OnePasswordItem
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-db-secret
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-db-secret
|
||||||
spec:
|
spec:
|
||||||
itemPath: {{ required "A secret-reference for the DB-Secret must be provided" .Values.secrets.databaseRef }}
|
itemPath: {{ required "A secret-reference for the DB-Secret must be provided" .Values.secrets.databaseSecretRef }}
|
||||||
@@ -17,7 +17,7 @@ spec:
|
|||||||
{{- toYaml .Values.smbConnection.cron.securityContext.pod | nindent 12 }}
|
{{- toYaml .Values.smbConnection.cron.securityContext.pod | nindent 12 }}
|
||||||
containers:
|
containers:
|
||||||
- name: paperless-consume-cronjob
|
- name: paperless-consume-cronjob
|
||||||
image: busybox:1.28
|
image: "{{ .Values.paperless.busybox.image.repository }}:{{ .Values.paperless.busybox.image.tag }}"
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.smbConnection.cron.securityContext.container | nindent 16 }}
|
{{- toYaml .Values.smbConnection.cron.securityContext.container | nindent 16 }}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
|
# Documented exception from the "-<kind>" naming scheme (issue #32):
|
||||||
|
# renaming a PVC would provision a new, empty volume, so the historic
|
||||||
|
# "-consume-volume-claim" name stays.
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-consume-volume-claim
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-consume-volume-claim
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ kind: OnePasswordItem
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-secret
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-secret
|
||||||
spec:
|
spec:
|
||||||
itemPath: {{ required "A secret-reference for the Paperless-Secret must be provided" .Values.secrets.paperlessRef }}
|
itemPath: {{ required "A secret-reference for the Paperless-Secret must be provided" .Values.secrets.paperlessSecretRef }}
|
||||||
@@ -26,7 +26,7 @@ spec:
|
|||||||
# paperless.securityContext in values.yaml) so the main container can
|
# paperless.securityContext in values.yaml) so the main container can
|
||||||
# run fully hardened (non-root, no privilege escalation).
|
# run fully hardened (non-root, no privilege escalation).
|
||||||
- name: init-run-ownership
|
- name: init-run-ownership
|
||||||
image: busybox:1.28
|
image: "{{ .Values.paperless.busybox.image.repository }}:{{ .Values.paperless.busybox.image.tag }}"
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
command:
|
command:
|
||||||
- sh
|
- sh
|
||||||
@@ -185,6 +185,26 @@ spec:
|
|||||||
- name: PAPERLESS_DISABLE_REGULAR_LOGIN
|
- name: PAPERLESS_DISABLE_REGULAR_LOGIN
|
||||||
value: "{{ .Values.oidc.disableRegularLogin }}"
|
value: "{{ .Values.oidc.disableRegularLogin }}"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- range $value := .Values.paperless.env }}
|
||||||
|
{{- if $value.value }}
|
||||||
|
- name: {{ $value.name }}
|
||||||
|
value: {{ tpl $value.value $ }}
|
||||||
|
{{- else if $value.valueFrom }}
|
||||||
|
{{- if $value.valueFrom.secretKeyRef }}
|
||||||
|
- name: {{ $value.name }}
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ tpl $value.valueFrom.secretKeyRef.name $ }}
|
||||||
|
key: {{ tpl $value.valueFrom.secretKeyRef.key $ }}
|
||||||
|
{{- else if $value.valueFrom.configMapKeyRef }}
|
||||||
|
- name: {{ $value.name }}
|
||||||
|
valueFrom:
|
||||||
|
configMapKeyRef:
|
||||||
|
name: {{ tpl $value.valueFrom.configMapKeyRef.name $ }}
|
||||||
|
key: {{ tpl $value.valueFrom.configMapKeyRef.key $ }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: "/usr/src/paperless/data"
|
- mountPath: "/usr/src/paperless/data"
|
||||||
name: "paperless-volume"
|
name: "paperless-volume"
|
||||||
@@ -206,32 +226,11 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
{{- include "paperless-ngx.resources" .Values.paperless.resources | nindent 12 }}
|
{{- include "paperless-ngx.resources" .Values.paperless.resources | nindent 12 }}
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
{{- toYaml .Values.paperless.readinessProbe | nindent 12 }}
|
||||||
path: /
|
|
||||||
port: 8000
|
|
||||||
periodSeconds: 10
|
|
||||||
failureThreshold: 3
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 5
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
{{- toYaml .Values.paperless.livenessProbe | nindent 12 }}
|
||||||
path: /
|
|
||||||
port: 8000
|
|
||||||
periodSeconds: 30
|
|
||||||
failureThreshold: 3
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 5
|
|
||||||
# The startup probe gates liveness/readiness. Paperless runs database
|
|
||||||
# migrations on startup, and since 3.0 the first start after an
|
|
||||||
# upgrade also rebuilds the search index from scratch (Whoosh ->
|
|
||||||
# Tantivy): budget 10s * 60 = 600s.
|
|
||||||
startupProbe:
|
startupProbe:
|
||||||
httpGet:
|
{{- toYaml .Values.paperless.startupProbe | nindent 12 }}
|
||||||
path: /
|
|
||||||
port: 8000
|
|
||||||
periodSeconds: 10
|
|
||||||
failureThreshold: 60
|
|
||||||
timeoutSeconds: 5
|
|
||||||
restartPolicy: Always
|
restartPolicy: Always
|
||||||
volumes:
|
volumes:
|
||||||
- name: tmp
|
- name: tmp
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
|
# Documented exception from the "-<kind>" naming scheme (issue #32):
|
||||||
|
# renaming a PVC would provision a new, empty volume, so the historic
|
||||||
|
# "-smb-volume-claim" name stays.
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-smb-volume-claim
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-smb-volume-claim
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
|
|||||||
@@ -3,11 +3,14 @@ kind: Ingress
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
|
||||||
annotations:
|
annotations:
|
||||||
cert-manager.io/cluster-issuer: {{ required "A Cluster-Issuer must be provided" .Values.ingress.clusterIssuer}}
|
cert-manager.io/cluster-issuer: {{ required "A Cluster-Issuer must be provided" .Values.ingress.clusterIssuer }}
|
||||||
nginx.ingress.kubernetes.io/proxy-body-size: {{ .Values.paperless.files.maxUploadFileSize }}
|
nginx.ingress.kubernetes.io/proxy-body-size: {{ .Values.paperless.files.maxUploadFileSize }}
|
||||||
nginx.org/client-max-body-size: {{ .Values.paperless.files.maxUploadFileSize }}
|
nginx.org/client-max-body-size: {{ .Values.paperless.files.maxUploadFileSize }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
ingressClassName: nginx
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
rules:
|
rules:
|
||||||
- host: {{ required "A Domain/Host must be provided" .Values.ingress.domain }}
|
- host: {{ required "A Domain/Host must be provided" .Values.ingress.domain }}
|
||||||
http:
|
http:
|
||||||
@@ -22,4 +25,4 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- {{ required "A Domain/Host must be provided" .Values.ingress.domain }}
|
- {{ required "A Domain/Host must be provided" .Values.ingress.domain }}
|
||||||
secretName: tls-{{ .Release.Name }}-{{ .Chart.Name }}-{{ .Values.ingress.domain }}-ingress
|
secretName: tls-{{ .Release.Name }}-{{ .Chart.Name }}-ingress
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
|
# Documented exception from the "-<kind>" naming scheme (issue #32):
|
||||||
|
# renaming a PVC would provision a new, empty volume, so the historic
|
||||||
|
# "-volume-claim" name stays.
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-volume-claim
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-volume-claim
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-pre-post-consumption-scripts
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-pre-post-consumption-scripts-configmap
|
||||||
data:
|
data:
|
||||||
pre-consume-script: |-
|
pre-consume-script: |-
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ kind: OnePasswordItem
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ .Release.Name }}-{{ .Chart.Name }}-redis-secret
|
name: {{ .Release.Name }}-{{ .Chart.Name }}-redis-secret
|
||||||
spec:
|
spec:
|
||||||
itemPath: {{ required "A secret-reference for the Redis-Secret must be provided" .Values.secrets.redisRef }}
|
itemPath: {{ required "A secret-reference for the Redis-Secret must be provided" .Values.secrets.redisSecretRef }}
|
||||||
@@ -5,20 +5,31 @@
|
|||||||
scaleDown: false
|
scaleDown: false
|
||||||
|
|
||||||
secrets:
|
secrets:
|
||||||
redisRef: null
|
redisSecretRef: null
|
||||||
databaseRef: null
|
databaseSecretRef: null
|
||||||
paperlessRef: null
|
paperlessSecretRef: null
|
||||||
smbConnectionSecretRef: null
|
smbConnectionSecretRef: null
|
||||||
oidcSecretRef: null
|
oidcSecretRef: null
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
clusterIssuer: "letsencrypt-issuer"
|
clusterIssuer: "letsencrypt-issuer"
|
||||||
domain: null
|
domain: null
|
||||||
|
className: nginx
|
||||||
|
# Extra annotations for the Ingress; merged with the cert-manager
|
||||||
|
# cluster-issuer and upload-size annotations the chart always sets.
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
paperless:
|
paperless:
|
||||||
# Replica count for this workload; 0 is allowed and scales it down.
|
# Replica count for this workload; 0 is allowed and scales it down.
|
||||||
# The chart-global scaleDown flag takes precedence.
|
# The chart-global scaleDown flag takes precedence.
|
||||||
replicas: 1
|
replicas: 1
|
||||||
|
# Auxiliary busybox image, used by the /run-ownership init container and the
|
||||||
|
# SMB consume-mover CronJob. Pinned independently of appVersion (which
|
||||||
|
# tracks paperless-ngx); reviewed alongside every app-version update round.
|
||||||
|
busybox:
|
||||||
|
image:
|
||||||
|
repository: busybox
|
||||||
|
tag: "1.38.0"
|
||||||
ocr:
|
ocr:
|
||||||
languages: "eng"
|
languages: "eng"
|
||||||
# Paperless-ngx 3.x modes: auto (default, skips OCR when embedded text
|
# Paperless-ngx 3.x modes: auto (default, skips OCR when embedded text
|
||||||
@@ -53,6 +64,37 @@ paperless:
|
|||||||
scripts:
|
scripts:
|
||||||
postConsumptionScripts: []
|
postConsumptionScripts: []
|
||||||
preConsumptionScripts: []
|
preConsumptionScripts: []
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8000
|
||||||
|
periodSeconds: 30
|
||||||
|
failureThreshold: 3
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 5
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8000
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 3
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 5
|
||||||
|
# The startup probe gates liveness/readiness. Paperless runs database
|
||||||
|
# migrations on startup, and since 3.0 the first start after an upgrade
|
||||||
|
# also rebuilds the search index from scratch (Whoosh -> Tantivy):
|
||||||
|
# budget 10s * 60 = 600s.
|
||||||
|
startupProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8000
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 60
|
||||||
|
timeoutSeconds: 5
|
||||||
|
# Extra environment variables, appended to the ones the chart always sets.
|
||||||
|
# Values are rendered through tpl; value, secretKeyRef and configMapKeyRef
|
||||||
|
# forms are supported.
|
||||||
|
env: []
|
||||||
resources:
|
resources:
|
||||||
# Limits are optional: memory and ephemeral-storage limits default to
|
# Limits are optional: memory and ephemeral-storage limits default to
|
||||||
# limitFactor x the request, an explicitly set limit always wins, and a
|
# limitFactor x the request, an explicitly set limit always wins, and a
|
||||||
|
|||||||
Reference in new issue
Block a user