feat(Booklore): add Booklore - #34
Merged
Merged
Conversation
Contributor
--- kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: media/booklore
+++ kubernetes/apps Kustomization: flux-system/cluster-apps Kustomization: media/booklore
@@ -0,0 +1,52 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+ labels:
+ kustomize.toolkit.fluxcd.io/name: cluster-apps
+ kustomize.toolkit.fluxcd.io/namespace: flux-system
+ name: booklore
+ namespace: media
+spec:
+ decryption:
+ provider: sops
+ deletionPolicy: WaitForTermination
+ interval: 1h
+ patches:
+ - patch: |-
+ apiVersion: helm.toolkit.fluxcd.io/v2
+ kind: HelmRelease
+ metadata:
+ name: _
+ spec:
+ install:
+ crds: CreateReplace
+ strategy:
+ name: RetryOnFailure
+ rollback:
+ cleanupOnFail: true
+ recreate: true
+ upgrade:
+ cleanupOnFail: true
+ crds: CreateReplace
+ strategy:
+ name: RemediateOnFailure
+ remediation:
+ remediateLastFailure: true
+ retries: 2
+ target:
+ group: helm.toolkit.fluxcd.io
+ kind: HelmRelease
+ path: ./kubernetes/apps/media/booklore/app
+ postBuild:
+ substituteFrom:
+ - kind: Secret
+ name: cluster-secrets
+ prune: true
+ sourceRef:
+ kind: GitRepository
+ name: flux-system
+ namespace: flux-system
+ targetNamespace: media
+ wait: true
+
--- kubernetes/apps/media/booklore/app Kustomization: media/booklore HelmRelease: media/booklore
+++ kubernetes/apps/media/booklore/app Kustomization: media/booklore HelmRelease: media/booklore
@@ -0,0 +1,71 @@
+---
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+ labels:
+ kustomize.toolkit.fluxcd.io/name: booklore
+ kustomize.toolkit.fluxcd.io/namespace: media
+ name: booklore
+ namespace: media
+spec:
+ chartRef:
+ kind: OCIRepository
+ name: booklore
+ install:
+ crds: CreateReplace
+ createNamespace: true
+ remediation:
+ retries: 3
+ strategy:
+ name: RetryOnFailure
+ interval: 1h
+ maxHistory: 3
+ rollback:
+ cleanupOnFail: true
+ recreate: true
+ timeout: 20m
+ uninstall:
+ keepHistory: false
+ upgrade:
+ cleanupOnFail: true
+ crds: CreateReplace
+ remediation:
+ remediateLastFailure: true
+ retries: 2
+ strategy:
+ name: RemediateOnFailure
+ values:
+ credentials:
+ s3:
+ accessKey: ..PLACEHOLDER_S3ID..
+ bucket: ..PLACEHOLDER_S3PREFIX..-booklore
+ encrKey: ..PLACEHOLDER_S3KEY..
+ secretKey: ..PLACEHOLDER_S3KEY..
+ type: s3
+ url: https://placeholder.example
+ global:
+ stopAll: false
+ persistence:
+ books:
+ enabled: true
+ mountPath: /books
+ path: /mnt/media/calibre
+ server: 192.168.50.118
+ type: nfs
+ data:
+ volsync:
+ - credentials: s3
+ dest:
+ enabled: true
+ moverSecurityContext:
+ fsGroup: 0
+ runAsGroup: 0
+ runAsUser: 0
+ name: data
+ src:
+ enabled: true
+ moverSecurityContext:
+ runAsGroup: 0
+ runAsUser: 0
+ type: restic
+
--- kubernetes/apps/media/booklore/app Kustomization: media/booklore OCIRepository: media/booklore
+++ kubernetes/apps/media/booklore/app Kustomization: media/booklore OCIRepository: media/booklore
@@ -0,0 +1,18 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: OCIRepository
+metadata:
+ labels:
+ kustomize.toolkit.fluxcd.io/name: booklore
+ kustomize.toolkit.fluxcd.io/namespace: media
+ name: booklore
+ namespace: media
+spec:
+ interval: 15m
+ layerSelector:
+ mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
+ operation: copy
+ ref:
+ tag: 1.6.1
+ url: oci://oci.trueforge.org/truecharts/booklore
+
--- kubernetes/apps/media/booklore/app Kustomization: media/booklore HTTPRoute: media/booklore
+++ kubernetes/apps/media/booklore/app Kustomization: media/booklore HTTPRoute: media/booklore
@@ -0,0 +1,25 @@
+---
+apiVersion: gateway.networking.k8s.io/v1
+kind: HTTPRoute
+metadata:
+ annotations:
+ gatus.home-operations.com/endpoint: |
+ client:
+ dns-resolver: tcp://..PLACEHOLDER_UNIFI_HOST..:53
+ labels:
+ kustomize.toolkit.fluxcd.io/name: booklore
+ kustomize.toolkit.fluxcd.io/namespace: media
+ name: booklore
+ namespace: media
+spec:
+ hostnames:
+ - book...PLACEHOLDER_SECRET_DOMAIN..
+ parentRefs:
+ - name: envoy-internal
+ namespace: network
+ sectionName: https
+ rules:
+ - backendRefs:
+ - name: booklore
+ port: 6060
+ |
Contributor
--- HelmRelease: media/booklore ConfigMap: media/booklore-mariadb-passinit
+++ HelmRelease: media/booklore ConfigMap: media/booklore-mariadb-passinit
@@ -0,0 +1,18 @@
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: booklore-mariadb-passinit
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mariadb
+ helm-revision: '1'
+ release: booklore
+data:
+ passinit.sql: |
+ ALTER USER root@'%' IDENTIFIED VIA mysql_native_password USING PASSWORD("PLACEHOLDERROOTPASSWORD");
+ ALTER USER booklore@'%' IDENTIFIED VIA mysql_native_password USING PASSWORD("PLACEHOLDERPASSWORD");
+ FLUSH PRIVILEGES;
+
--- HelmRelease: media/booklore PersistentVolumeClaim: media/booklore-mariadb-data
+++ HelmRelease: media/booklore PersistentVolumeClaim: media/booklore-mariadb-data
@@ -0,0 +1,19 @@
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: booklore-mariadb-data
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mariadb
+ helm-revision: '1'
+ release: booklore
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 100Gi
+
--- HelmRelease: media/booklore PersistentVolumeClaim: media/booklore-data
+++ HelmRelease: media/booklore PersistentVolumeClaim: media/booklore-data
@@ -0,0 +1,23 @@
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: booklore-data
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ release: booklore
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 100Gi
+ dataSourceRef:
+ kind: ReplicationDestination
+ name: booklore-data-data-dest
+ apiGroup: volsync.backube
+
--- HelmRelease: media/booklore Service: media/booklore-mariadb
+++ HelmRelease: media/booklore Service: media/booklore-mariadb
@@ -0,0 +1,26 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: booklore-mariadb
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mariadb
+ helm-revision: '1'
+ release: booklore
+ service.name: main
+spec:
+ type: ClusterIP
+ publishNotReadyAddresses: false
+ ports:
+ - name: main
+ port: 3306
+ protocol: TCP
+ targetPort: 3306
+ selector:
+ pod.name: main
+ app.kubernetes.io/name: mariadb
+ app.kubernetes.io/instance: booklore
+
--- HelmRelease: media/booklore Service: media/booklore
+++ HelmRelease: media/booklore Service: media/booklore
@@ -0,0 +1,26 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: booklore
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ release: booklore
+ service.name: main
+spec:
+ type: ClusterIP
+ publishNotReadyAddresses: false
+ ports:
+ - name: main
+ port: 6060
+ protocol: TCP
+ targetPort: 6060
+ selector:
+ pod.name: main
+ app.kubernetes.io/name: booklore
+ app.kubernetes.io/instance: booklore
+
--- HelmRelease: media/booklore Deployment: media/booklore-mariadb
+++ HelmRelease: media/booklore Deployment: media/booklore-mariadb
@@ -0,0 +1,235 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: booklore-mariadb
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mariadb
+ helm-revision: '1'
+ release: booklore
+spec:
+ replicas: 1
+ revisionHistoryLimit: 3
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ pod.name: main
+ app.kubernetes.io/name: mariadb
+ app.kubernetes.io/instance: booklore
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mariadb
+ helm-revision: '1'
+ pod.lifecycle: permanent
+ pod.name: main
+ release: booklore
+ truecharts.org/pvc: data
+ annotations:
+ checksum/cnpg: fc940fff4269c53072f7039f0811133e9b83400670af014010bf50d3f13740f4
+ checksum/configmaps: 2f70d6807f093247fad96153a9c6c0d57b4aa02789e19be1b9c088c65f4e2d07
+ checksum/mariadb: 09c85576cb45b1eecd1467732b11ea8fa3363b0105c465f02a6ad64991521d52
+ checksum/mongodb: 09c85576cb45b1eecd1467732b11ea8fa3363b0105c465f02a6ad64991521d52
+ checksum/persistence: 8ffd0e1ed704294dee132aa12aa878607a18e34eb50683c4740e2587a5b9361b
+ checksum/services: 3c1dd612ec74ee9e0f9d1999416f52f56037e0b49ff3a1234059de4203563ec5
+ checksum/solr: 29c14feeaddbf7762052db593898d274941f539cee681ddc613957587686f347
+ spec:
+ serviceAccountName: default
+ automountServiceAccountToken: false
+ runtimeClassName: null
+ hostNetwork: false
+ hostPID: false
+ hostIPC: false
+ shareProcessNamespace: false
+ enableServiceLinks: false
+ restartPolicy: Always
+ nodeSelector:
+ kubernetes.io/arch: amd64
+ affinity:
+ podAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ - topologyKey: kubernetes.io/hostname
+ labelSelector:
+ matchExpressions:
+ - key: truecharts.org/pvc
+ operator: In
+ values:
+ - data
+ topologySpreadConstraints:
+ - maxSkew: 1
+ whenUnsatisfiable: ScheduleAnyway
+ topologyKey: kubernetes.io/hostname
+ labelSelector:
+ matchLabels:
+ pod.name: main
+ app.kubernetes.io/name: mariadb
+ app.kubernetes.io/instance: booklore
+ nodeAffinityPolicy: Honor
+ nodeTaintsPolicy: Honor
+ dnsPolicy: ClusterFirst
+ dnsConfig:
+ options:
+ - name: ndots
+ value: '1'
+ terminationGracePeriodSeconds: 60
+ securityContext:
+ fsGroup: 568
+ fsGroupChangePolicy: OnRootMismatch
+ supplementalGroups:
+ - 568
+ sysctls: []
+ hostUsers: true
+ containers:
+ - name: booklore-mariadb
+ image: docker.io/bitnamisecure/mariadb:latest@sha256:3226e489fa1441a6faaa7142742af2c5b65b9183485c80c8ce2014fcb688c13d
+ imagePullPolicy: IfNotPresent
+ tty: false
+ stdin: false
+ ports:
+ - name: main
+ containerPort: 3306
+ protocol: TCP
+ hostPort: null
+ volumeMounts:
+ - name: data
+ mountPath: /bitnami/mariadb
+ readOnly: false
+ - name: devshm
+ mountPath: /dev/shm
+ readOnly: false
+ - name: passinit
+ mountPath: /init/passinit.sql
+ readOnly: false
+ subPath: passinit.sql
+ - name: shared
+ mountPath: /shared
+ readOnly: false
+ - name: tmp
+ mountPath: /tmp
+ readOnly: false
+ - name: varlogs
+ mountPath: /var/logs
+ readOnly: false
+ - name: varrun
+ mountPath: /var/run
+ readOnly: false
+ livenessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -ec
+ - until /opt/bitnami/scripts/mariadb/healthcheck.sh; do sleep 2; done
+ initialDelaySeconds: 12
+ failureThreshold: 5
+ successThreshold: 1
+ timeoutSeconds: 5
+ periodSeconds: 15
+ readinessProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -ec
+ - until /opt/bitnami/scripts/mariadb/healthcheck.sh; do sleep 2; done
+ initialDelaySeconds: 10
+ failureThreshold: 4
+ successThreshold: 2
+ timeoutSeconds: 5
+ periodSeconds: 12
+ startupProbe:
+ exec:
+ command:
+ - /bin/bash
+ - -ec
+ - until /opt/bitnami/scripts/mariadb/healthcheck.sh; do sleep 2; done
+ initialDelaySeconds: 10
+ failureThreshold: 60
+ successThreshold: 1
+ timeoutSeconds: 3
+ periodSeconds: 5
+ resources:
+ requests:
+ cpu: 75m
+ memory: 200Mi
+ limits:
+ cpu: 1500m
+ memory: 2400Mi
+ securityContext:
+ runAsNonRoot: false
+ runAsUser: 568
+ runAsGroup: 0
+ readOnlyRootFilesystem: false
+ allowPrivilegeEscalation: false
+ privileged: false
+ seccompProfile:
+ type: RuntimeDefault
+ capabilities:
+ add: []
+ drop:
+ - ALL
+ env:
+ - name: TZ
+ value: UTC
+ - name: UMASK
+ value: '0022'
+ - name: UMASK_SET
+ value: '0022'
+ - name: NVIDIA_VISIBLE_DEVICES
+ value: void
+ - name: PUID
+ value: '568'
+ - name: USER_ID
+ value: '568'
+ - name: UID
+ value: '568'
+ - name: PGID
+ value: '568'
+ - name: GROUP_ID
+ value: '568'
+ - name: GID
+ value: '568'
+ - name: MARIADB_DATABASE
+ value: test
+ - name: MARIADB_EXTRA_FLAGS
+ value: --init-file=/init/passinit.sql
+ - name: MARIADB_PASSWORD
+ value: PLACEHOLDERPASSWORD
+ - name: MARIADB_ROOT_PASSWORD
+ value: PLACEHOLDERROOTPASSWORD
+ - name: MARIADB_USER
+ value: booklore
+ volumes:
+ - name: passinit
+ configMap:
+ name: booklore-mariadb-passinit
+ optional: false
+ items:
+ - key: passinit.sql
+ path: passinit.sql
+ - name: devshm
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: shared
+ emptyDir: {}
+ - name: tmp
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: varlogs
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: varrun
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: data
+ persistentVolumeClaim:
+ claimName: booklore-mariadb-data
+
--- HelmRelease: media/booklore Deployment: media/booklore
+++ HelmRelease: media/booklore Deployment: media/booklore
@@ -0,0 +1,296 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: booklore
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ release: booklore
+spec:
+ replicas: 1
+ revisionHistoryLimit: 3
+ strategy:
+ type: Recreate
+ selector:
+ matchLabels:
+ pod.name: main
+ app.kubernetes.io/name: booklore
+ app.kubernetes.io/instance: booklore
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ pod.lifecycle: permanent
+ pod.name: main
+ release: booklore
+ truecharts.org/pvc: data
+ annotations:
+ checksum/cnpg: fc940fff4269c53072f7039f0811133e9b83400670af014010bf50d3f13740f4
+ checksum/configmaps: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
+ checksum/mariadb: db8dcc0a958e6d03b5fc546ac43a65c2e783126cf1c59ec885bd63072fe5ac86
+ checksum/mongodb: 09c85576cb45b1eecd1467732b11ea8fa3363b0105c465f02a6ad64991521d52
+ checksum/persistence: fb910516287a74fa82e92dad650785cb8f0ca930086d5daac2a53afc91452e97
+ checksum/services: e7a651656b12e6a7ab0fa253c37a88f40b00e43ee28182ad394b470a16eb564b
+ checksum/solr: 29c14feeaddbf7762052db593898d274941f539cee681ddc613957587686f347
+ spec:
+ serviceAccountName: default
+ automountServiceAccountToken: false
+ runtimeClassName: null
+ hostNetwork: false
+ hostPID: false
+ hostIPC: false
+ shareProcessNamespace: false
+ enableServiceLinks: false
+ restartPolicy: Always
+ nodeSelector:
+ kubernetes.io/arch: amd64
+ affinity:
+ podAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ - topologyKey: kubernetes.io/hostname
+ labelSelector:
+ matchExpressions:
+ - key: truecharts.org/pvc
+ operator: In
+ values:
+ - data
+ topologySpreadConstraints:
+ - maxSkew: 1
+ whenUnsatisfiable: ScheduleAnyway
+ topologyKey: kubernetes.io/hostname
+ labelSelector:
+ matchLabels:
+ pod.name: main
+ app.kubernetes.io/name: booklore
+ app.kubernetes.io/instance: booklore
+ nodeAffinityPolicy: Honor
+ nodeTaintsPolicy: Honor
+ dnsPolicy: ClusterFirst
+ dnsConfig:
+ options:
+ - name: ndots
+ value: '1'
+ terminationGracePeriodSeconds: 60
+ securityContext:
+ fsGroup: 568
+ fsGroupChangePolicy: OnRootMismatch
+ supplementalGroups:
+ - 568
+ sysctls: []
+ hostUsers: true
+ containers:
+ - name: booklore
+ image: ghcr.io/booklore-app/booklore:v1.13.1@sha256:4979f536ae7dfde891cd998e8545cd2e3d534a164c23bc4663d83616d9a9f3a7
+ imagePullPolicy: IfNotPresent
+ tty: false
+ stdin: false
+ ports:
+ - name: main
+ containerPort: 6060
+ protocol: TCP
+ hostPort: null
+ volumeMounts:
+ - name: books
+ mountPath: /books
+ readOnly: false
+ - name: data
+ mountPath: /app/data
+ readOnly: false
+ - name: devshm
+ mountPath: /dev/shm
+ readOnly: false
+ - name: shared
+ mountPath: /shared
+ readOnly: false
+ - name: tmp
+ mountPath: /tmp
+ readOnly: false
+ - name: varlogs
+ mountPath: /var/logs
+ readOnly: false
+ livenessProbe:
+ httpGet:
+ port: 6060
+ path: /
+ scheme: HTTP
+ initialDelaySeconds: 12
+ failureThreshold: 5
+ successThreshold: 1
+ timeoutSeconds: 5
+ periodSeconds: 15
+ readinessProbe:
+ httpGet:
+ port: 6060
+ path: /
+ scheme: HTTP
+ initialDelaySeconds: 10
+ failureThreshold: 4
+ successThreshold: 2
+ timeoutSeconds: 5
+ periodSeconds: 12
+ startupProbe:
+ httpGet:
+ port: 6060
+ path: /
+ scheme: HTTP
+ initialDelaySeconds: 10
+ failureThreshold: 60
+ successThreshold: 1
+ timeoutSeconds: 3
+ periodSeconds: 5
+ resources:
+ requests:
+ cpu: 75m
+ memory: 200Mi
+ limits:
+ cpu: 1500m
+ memory: 2400Mi
+ securityContext:
+ runAsNonRoot: false
+ runAsUser: 0
+ runAsGroup: 0
+ readOnlyRootFilesystem: false
+ allowPrivilegeEscalation: false
+ privileged: false
+ seccompProfile:
+ type: RuntimeDefault
+ capabilities:
+ add:
+ - CHOWN
+ - SETUID
+ - SETGID
+ - FOWNER
+ - DAC_OVERRIDE
+ drop:
+ - ALL
+ env:
+ - name: TZ
+ value: UTC
+ - name: UMASK
+ value: '0022'
+ - name: UMASK_SET
+ value: '0022'
+ - name: NVIDIA_VISIBLE_DEVICES
+ value: void
+ - name: PUID
+ value: '568'
+ - name: USER_ID
+ value: '568'
+ - name: UID
+ value: '568'
+ - name: PGID
+ value: '568'
+ - name: GROUP_ID
+ value: '568'
+ - name: GID
+ value: '568'
+ - name: BOOKLORE_PORT
+ value: '6060'
+ - name: DATABASE_PASSWORD
+ value: PLACEHOLDERPASSWORD
+ - name: DATABASE_URL
+ valueFrom:
+ secretKeyRef:
+ key: jdbc-mariadb
+ name: booklore-mariadbcreds
+ - name: DATABASE_USERNAME
+ value: booklore
+ initContainers:
+ - name: booklore-system-mariadb-wait
+ image: oci.trueforge.org/containerforge/mariadb-client:1.1.0
+ imagePullPolicy: IfNotPresent
+ tty: false
+ stdin: false
+ command:
+ - /bin/sh
+ - -c
+ - |-
+ /bin/bash <<'EOF'
+ echo "Executing DB waits..."
+ until
+ mysqladmin -uroot -h"${MARIADB_HOST}" -p"${MARIADB_ROOT_PASSWORD}" ping \
+ && mysqladmin -uroot -h"${MARIADB_HOST}" -p"${MARIADB_ROOT_PASSWORD}" status;
+ do sleep 2;
+ done
+ EOF
+ volumeMounts:
+ - name: devshm
+ mountPath: /dev/shm
+ readOnly: false
+ - name: shared
+ mountPath: /shared
+ readOnly: false
+ - name: tmp
+ mountPath: /tmp
+ readOnly: false
+ - name: varlogs
+ mountPath: /var/logs
+ readOnly: false
+ resources:
+ requests:
+ cpu: 10m
+ memory: 50Mi
+ limits:
+ cpu: 500m
+ memory: 512Mi
+ securityContext:
+ runAsNonRoot: true
+ runAsUser: 568
+ runAsGroup: 568
+ readOnlyRootFilesystem: true
+ allowPrivilegeEscalation: false
+ privileged: false
+ seccompProfile:
+ type: RuntimeDefault
+ capabilities:
+ add: []
+ drop:
+ - ALL
+ env:
+ - name: TZ
+ value: UTC
+ - name: UMASK
+ value: '0022'
+ - name: UMASK_SET
+ value: '0022'
+ - name: NVIDIA_VISIBLE_DEVICES
+ value: void
+ - name: S6_READ_ONLY_ROOT
+ value: '1'
+ - name: MARIADB_HOST
+ valueFrom:
+ secretKeyRef:
+ key: plainhost
+ name: booklore-mariadbcreds
+ - name: MARIADB_ROOT_PASSWORD
+ value: PLACEHOLDERROOTPASSWORD
+ volumes:
+ - name: devshm
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: shared
+ emptyDir: {}
+ - name: tmp
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: varlogs
+ emptyDir:
+ medium: Memory
+ sizeLimit: 2400Mi
+ - name: books
+ nfs:
+ path: /mnt/media/calibre
+ server: 192.168.50.118
+ - name: data
+ persistentVolumeClaim:
+ claimName: booklore-data
+
--- HelmRelease: media/booklore ReplicationDestination: media/booklore-data-data-dest
+++ HelmRelease: media/booklore ReplicationDestination: media/booklore-data-data-dest
@@ -0,0 +1,29 @@
+---
+apiVersion: volsync.backube/v1alpha1
+kind: ReplicationDestination
+metadata:
+ name: booklore-data-data-dest
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ release: booklore
+spec:
+ trigger:
+ manual: restore-once
+ restic:
+ repository: booklore-data-volsync-data
+ copyMethod: Snapshot
+ capacity: 100Gi
+ cleanupTempPVC: false
+ cleanupCachePVC: false
+ accessModes:
+ - ReadWriteOnce
+ cacheCapacity: 10Gi
+ moverSecurityContext:
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 0
+
--- HelmRelease: media/booklore ReplicationSource: media/booklore-data-data
+++ HelmRelease: media/booklore ReplicationSource: media/booklore-data-data
@@ -0,0 +1,35 @@
+---
+apiVersion: volsync.backube/v1alpha1
+kind: ReplicationSource
+metadata:
+ name: booklore-data-data
+ namespace: media
+ labels:
+ app.kubernetes.io/instance: booklore
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: booklore
+ helm-revision: '1'
+ release: booklore
+spec:
+ sourcePVC: booklore-data
+ trigger:
+ schedule: 0 0 * * *
+ restic:
+ repository: booklore-data-volsync-data
+ copyMethod: Snapshot
+ pruneIntervalDays: 7
+ unlock: '20251206112248'
+ retain:
+ hourly: 6
+ daily: 5
+ weekly: 4
+ monthly: 3
+ yearly: 1
+ accessModes:
+ - ReadWriteOnce
+ cacheCapacity: 10Gi
+ moverSecurityContext:
+ runAsUser: 0
+ runAsGroup: 0
+ fsGroup: 568
+ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Manual Pull Request
🚀 Summary
📦 Affected Areas
✅ Checklist
./repositories/helm🧠 Notes for Myself