diff --git a/paperless/kustomization.yaml b/paperless/kustomization.yaml new file mode 100644 index 0000000..4ae436c --- /dev/null +++ b/paperless/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - main.yaml \ No newline at end of file diff --git a/paperless/main.yaml b/paperless/main.yaml new file mode 100644 index 0000000..2ad9f8d --- /dev/null +++ b/paperless/main.yaml @@ -0,0 +1,349 @@ +apiVersion: v1 +data: + postgres-password: V3R5azRIQklOSg== +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.6.12 + name: paperless-postgresql + namespace: paperless +type: Opaque +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.6.12 + name: paperless-postgresql + namespace: paperless +spec: + ports: + - name: tcp-postgresql + nodePort: null + port: 5432 + targetPort: tcp-postgresql + selector: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: postgresql + sessionAffinity: None + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.6.12 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + name: paperless-postgresql-hl + namespace: paperless +spec: + clusterIP: None + ports: + - name: tcp-postgresql + port: 5432 + targetPort: tcp-postgresql + publishNotReadyAddresses: true + selector: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: postgresql + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: paperless + app.kubernetes.io/version: 1.8.0 + helm.sh/chart: paperless-9.1.3 + name: paperless +spec: + ports: + - name: http + port: 8000 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: paperless + type: ClusterIP +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: paperless + app.kubernetes.io/version: 1.8.0 + helm.sh/chart: paperless-9.1.3 + name: paperless-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: openebs-3-replicas +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: paperless + app.kubernetes.io/version: 1.8.0 + helm.sh/chart: paperless-9.1.3 + name: paperless-media +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + storageClassName: openebs-3-replicas +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: paperless + app.kubernetes.io/version: 1.8.0 + helm.sh/chart: paperless-9.1.3 + name: paperless +spec: + replicas: 1 + revisionHistoryLimit: 3 + selector: + matchLabels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: paperless + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: paperless + spec: + automountServiceAccountToken: true + containers: + - env: + - name: COMPOSE_PROJECT_NAME + value: paperless + - name: PAPERLESS_OCR_LANGUAGE + value: ger + - name: PAPERLESS_PORT + value: "8000" + - name: PAPERLESS_REDIS + value: redis://redis.redis.svc.cluster.local:6379/0 + - name: PAPERLESS_TIME_ZONE + value: Europe/Berlin + - name: PAPERLESS_URL + value: http://chart-example.local + - name: USERMAP_GID + value: "1000" + - name: USERMAP_UID + value: "1000" + image: ghcr.io/paperless-ngx/paperless-ngx:1.8.0 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + tcpSocket: + port: 8000 + timeoutSeconds: 1 + name: paperless + ports: + - containerPort: 8000 + name: http + protocol: TCP + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 0 + periodSeconds: 10 + tcpSocket: + port: 8000 + timeoutSeconds: 1 + startupProbe: + failureThreshold: 30 + initialDelaySeconds: 0 + periodSeconds: 5 + tcpSocket: + port: 8000 + timeoutSeconds: 1 + volumeMounts: + - mountPath: /usr/src/paperless/data + name: data + - mountPath: /usr/src/paperless/media + name: media + dnsPolicy: ClusterFirst + enableServiceLinks: true + serviceAccountName: default + volumes: + - name: data + persistentVolumeClaim: + claimName: paperless-data + - name: media + persistentVolumeClaim: + claimName: paperless-media +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.6.12 + name: paperless-postgresql + namespace: paperless +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: postgresql + serviceName: paperless-postgresql-hl + template: + metadata: + annotations: null + labels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-11.6.12 + name: paperless-postgresql + spec: + affinity: + nodeAffinity: null + podAffinity: null + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/component: primary + app.kubernetes.io/instance: paperless + app.kubernetes.io/name: postgresql + namespaces: + - paperless + topologyKey: kubernetes.io/hostname + weight: 1 + containers: + - env: + - name: BITNAMI_DEBUG + value: "false" + - name: POSTGRESQL_PORT_NUMBER + value: "5432" + - name: POSTGRESQL_VOLUME_DIR + value: /bitnami/postgresql + - name: PGDATA + value: /bitnami/postgresql/data + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + key: postgres-password + name: paperless-postgresql + - name: POSTGRESQL_ENABLE_LDAP + value: "no" + - name: POSTGRESQL_ENABLE_TLS + value: "no" + - name: POSTGRESQL_LOG_HOSTNAME + value: "false" + - name: POSTGRESQL_LOG_CONNECTIONS + value: "false" + - name: POSTGRESQL_LOG_DISCONNECTIONS + value: "false" + - name: POSTGRESQL_PGAUDIT_LOG_CATALOG + value: "off" + - name: POSTGRESQL_CLIENT_MIN_MESSAGES + value: error + - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES + value: pgaudit + image: docker.io/bitnami/postgresql:14.4.0-debian-11-r4 + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + name: postgresql + ports: + - containerPort: 5432 + name: tcp-postgresql + readinessProbe: + exec: + command: + - /bin/sh + - -c + - -e + - | + exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ] + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + resources: + limits: {} + requests: + cpu: 250m + memory: 256Mi + securityContext: + runAsUser: 1001 + volumeMounts: + - mountPath: /dev/shm + name: dshm + - mountPath: /bitnami/postgresql + name: data + hostIPC: false + hostNetwork: false + initContainers: null + securityContext: + fsGroup: 1001 + serviceAccountName: default + volumes: + - emptyDir: + medium: Memory + name: dshm + updateStrategy: + rollingUpdate: {} + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi diff --git a/paperless/src/kustomization.yaml b/paperless/src/kustomization.yaml new file mode 100644 index 0000000..88895de --- /dev/null +++ b/paperless/src/kustomization.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +helmCharts: + - name: paperless + repo: https://k8s-at-home.com/charts/ + version: 9.1.3 + releaseName: paperless + includeCRDs: true + namespace: paperless + valuesFile: values.yaml diff --git a/paperless/src/values.yaml b/paperless/src/values.yaml new file mode 100644 index 0000000..eda800e --- /dev/null +++ b/paperless/src/values.yaml @@ -0,0 +1,125 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: ghcr.io/paperless-ngx/paperless-ngx + # -- image pull policy + pullPolicy: IfNotPresent + # -- image tag + # @default -- chart.appVersion + tag: + +# -- See the following files for additional environment variables: +# https://github.com/paperless-ngx/paperless-ngx/tree/main/docker/compose/ +# https://github.com/paperless-ngx/paperless-ngx/blob/main/paperless.conf.example +# @default -- See below +env: + # -- Project name + COMPOSE_PROJECT_NAME: paperless + # -- Redis to use + PAPERLESS_REDIS: redis://redis.redis.svc.cluster.local:6379/0 + # -- OCR languages to install + PAPERLESS_OCR_LANGUAGE: ger + USERMAP_UID: 1000 + USERMAP_GID: 1000 + PAPERLESS_TIME_ZONE: Europe/Berlin + # -- Database host to use + PAPERLESS_DBHOST: + # -- Port to use + PAPERLESS_PORT: 8000 + # -- Username for the root user + # PAPERLESS_ADMIN_USER: admin + # -- Password for the root user + # PAPERLESS_ADMIN_PASSWORD: admin + # PAPERLESS_URL: + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 8000 + redis: + ports: + redis: + port: 6379 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +persistence: + # -- Configure persistence for data. + # @default -- See values.yaml + data: + enabled: true + mountPath: /usr/src/paperless/data + accessMode: ReadWriteOnce + emptyDir: + enabled: false + storageClass: openebs-3-replicas + size: 1Gi + # -- Configure persistence for media. + # @default -- See values.yaml + media: + enabled: true + mountPath: /usr/src/paperless/media + accessMode: ReadWriteOnce + emptyDir: + enabled: false + storageClass: openebs-3-replicas + size: 5Gi + # -- Configure volume to monitor for new documents. + # @default -- See values.yaml + consume: + enabled: false + mountPath: /usr/src/paperless/consume + accessMode: ReadWriteOnce + emptyDir: + enabled: false + # -- Configure export volume. + # @default -- See values.yaml + export: + enabled: false + mountPath: /usr/src/paperless/export + accessMode: ReadWriteOnce + emptyDir: + enabled: false + +# -- Enable and configure postgresql database subchart under this key. +# For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql) +# @default -- See values.yaml +postgresql: + enabled: true + + postgresqlUsername: paperless + postgresqlPassword: paperless + postgresqlDatabase: paperless + + replication: + enabled: false + + persistence: + enabled: true + storageClass: openebs-3-replicas + accessMode: ReadWriteOnce + size: 8Gi + + #existingSecret: requarks-postgresql + +# -- Enable and configure redis subchart under this key. +# For more options see [redis chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/redis) +# @default -- See values.yaml +redis: + enabled: false + auth: + enabled: false +