From ea4156d98fb39cd901bb98424821b2b057ea7f3d Mon Sep 17 00:00:00 2001 From: Alex Lebens Date: Mon, 15 Dec 2025 18:19:16 -0600 Subject: [PATCH] move volsync to chart --- .../cl01tl/helm/audiobookshelf/Chart.lock | 10 +- .../cl01tl/helm/audiobookshelf/Chart.yaml | 8 ++ .../templates/external-secret.yaml | 114 ------------------ .../templates/persistent-volume-claim.yaml | 19 --- .../templates/replication-source.yaml | 52 -------- .../cl01tl/helm/audiobookshelf/values.yaml | 13 +- 6 files changed, 22 insertions(+), 194 deletions(-) delete mode 100644 clusters/cl01tl/helm/audiobookshelf/templates/replication-source.yaml diff --git a/clusters/cl01tl/helm/audiobookshelf/Chart.lock b/clusters/cl01tl/helm/audiobookshelf/Chart.lock index eeef965b0..e7b3c0026 100644 --- a/clusters/cl01tl/helm/audiobookshelf/Chart.lock +++ b/clusters/cl01tl/helm/audiobookshelf/Chart.lock @@ -2,5 +2,11 @@ dependencies: - name: app-template repository: https://bjw-s-labs.github.io/helm-charts/ version: 4.5.0 -digest: sha256:977ed15091e9ed30d647a626214701d22f3a8a5232a900e33f753cc7e090042f -generated: "2025-12-05T17:02:13.674405673Z" +- name: volsync-target + repository: oci://harbor.alexlebens.net/helm-charts + version: 0.3.0 +- name: volsync-target + repository: oci://harbor.alexlebens.net/helm-charts + version: 0.3.0 +digest: sha256:88e0d8008795451a64f3a2e4fa4fc120d48cef4badb4305e8e60afbb494352c5 +generated: "2025-12-15T18:19:02.989735-06:00" diff --git a/clusters/cl01tl/helm/audiobookshelf/Chart.yaml b/clusters/cl01tl/helm/audiobookshelf/Chart.yaml index 00463da8c..df3d4a059 100644 --- a/clusters/cl01tl/helm/audiobookshelf/Chart.yaml +++ b/clusters/cl01tl/helm/audiobookshelf/Chart.yaml @@ -19,5 +19,13 @@ dependencies: alias: audiobookshelf repository: https://bjw-s-labs.github.io/helm-charts/ version: 4.5.0 + - name: volsync-target + alias: volsync-target-config + version: 0.3.0 + repository: oci://harbor.alexlebens.net/helm-charts + - name: volsync-target + alias: volsync-target-metadata + version: 0.3.0 + repository: oci://harbor.alexlebens.net/helm-charts icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/audiobookshelf.png appVersion: 2.31.0 diff --git a/clusters/cl01tl/helm/audiobookshelf/templates/external-secret.yaml b/clusters/cl01tl/helm/audiobookshelf/templates/external-secret.yaml index d1da422a3..d049b5b1d 100644 --- a/clusters/cl01tl/helm/audiobookshelf/templates/external-secret.yaml +++ b/clusters/cl01tl/helm/audiobookshelf/templates/external-secret.yaml @@ -19,117 +19,3 @@ spec: key: /cl01tl/audiobookshelf/apprise metadataPolicy: None property: ntfy-url - ---- -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: audiobookshelf-config-backup-secret - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: audiobookshelf-config-backup-secret - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - target: - template: - mergePolicy: Merge - engineVersion: v2 - data: - RESTIC_REPOSITORY: "{{ `{{ .BUCKET_ENDPOINT }}` }}/audiobookshelf/audiobookshelf-config" - data: - - secretKey: BUCKET_ENDPOINT - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: S3_BUCKET_ENDPOINT - - secretKey: RESTIC_PASSWORD - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: RESTIC_PASSWORD - - secretKey: AWS_DEFAULT_REGION - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: AWS_DEFAULT_REGION - - secretKey: AWS_ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/volsync-backups - metadataPolicy: None - property: access_key - - secretKey: AWS_SECRET_ACCESS_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/volsync-backups - metadataPolicy: None - property: secret_key - ---- -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: audiobookshelf-metadata-backup-secret - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: audiobookshelf-metadata-backup-secret - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - target: - template: - mergePolicy: Merge - engineVersion: v2 - data: - RESTIC_REPOSITORY: "{{ `{{ .BUCKET_ENDPOINT }}` }}/audiobookshelf/audiobookshelf-metadata" - data: - - secretKey: BUCKET_ENDPOINT - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: S3_BUCKET_ENDPOINT - - secretKey: RESTIC_PASSWORD - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: RESTIC_PASSWORD - - secretKey: AWS_DEFAULT_REGION - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /cl01tl/volsync/restic/config - metadataPolicy: None - property: AWS_DEFAULT_REGION - - secretKey: AWS_ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/volsync-backups - metadataPolicy: None - property: access_key - - secretKey: AWS_SECRET_ACCESS_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/volsync-backups - metadataPolicy: None - property: secret_key diff --git a/clusters/cl01tl/helm/audiobookshelf/templates/persistent-volume-claim.yaml b/clusters/cl01tl/helm/audiobookshelf/templates/persistent-volume-claim.yaml index d31621e69..cbc323850 100644 --- a/clusters/cl01tl/helm/audiobookshelf/templates/persistent-volume-claim.yaml +++ b/clusters/cl01tl/helm/audiobookshelf/templates/persistent-volume-claim.yaml @@ -1,24 +1,5 @@ apiVersion: v1 kind: PersistentVolumeClaim -metadata: - name: audiobookshelf-nfs-storage-backup - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: audiobookshelf-nfs-storage-backup - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - volumeMode: Filesystem - storageClassName: nfs-client - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - ---- -apiVersion: v1 -kind: PersistentVolumeClaim metadata: name: audiobookshelf-nfs-storage namespace: {{ .Release.Namespace }} diff --git a/clusters/cl01tl/helm/audiobookshelf/templates/replication-source.yaml b/clusters/cl01tl/helm/audiobookshelf/templates/replication-source.yaml deleted file mode 100644 index 844a9a5ab..000000000 --- a/clusters/cl01tl/helm/audiobookshelf/templates/replication-source.yaml +++ /dev/null @@ -1,52 +0,0 @@ -apiVersion: volsync.backube/v1alpha1 -kind: ReplicationSource -metadata: - name: audiobookshelf-config-backup-source - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: audiobookshelf-config-backup-source - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - sourcePVC: audiobookshelf-config - trigger: - schedule: 0 4 * * * - restic: - pruneIntervalDays: 7 - repository: audiobookshelf-config-backup-secret - retain: - hourly: 1 - daily: 3 - weekly: 2 - monthly: 2 - yearly: 4 - copyMethod: Snapshot - storageClassName: ceph-block - volumeSnapshotClassName: ceph-blockpool-snapshot - ---- -apiVersion: volsync.backube/v1alpha1 -kind: ReplicationSource -metadata: - name: audiobookshelf-metadata-backup-source - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: audiobookshelf-metadata-backup-source - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - sourcePVC: audiobookshelf-metadata - trigger: - schedule: 0 4 * * * - restic: - pruneIntervalDays: 7 - repository: audiobookshelf-metadata-backup-secret - retain: - hourly: 1 - daily: 3 - weekly: 2 - monthly: 2 - yearly: 4 - copyMethod: Snapshot - storageClassName: ceph-block - volumeSnapshotClassName: ceph-blockpool-snapshot diff --git a/clusters/cl01tl/helm/audiobookshelf/values.yaml b/clusters/cl01tl/helm/audiobookshelf/values.yaml index be8b5ffc4..804e1af67 100644 --- a/clusters/cl01tl/helm/audiobookshelf/values.yaml +++ b/clusters/cl01tl/helm/audiobookshelf/values.yaml @@ -59,6 +59,7 @@ audiobookshelf: protocol: HTTP persistence: config: + forceRename: audiobookshelf-config storageClass: ceph-block accessMode: ReadWriteOnce size: 2Gi @@ -69,6 +70,7 @@ audiobookshelf: - path: /config readOnly: false metadata: + forceRename: audiobookshelf-metadata storageClass: ceph-block accessMode: ReadWriteOnce size: 10Gi @@ -78,13 +80,6 @@ audiobookshelf: main: - path: /metadata readOnly: false - backup: - existingClaim: audiobookshelf-nfs-storage-backup - advancedMounts: - main: - main: - - path: /metadata/backups - readOnly: false audiobooks: existingClaim: audiobookshelf-nfs-storage advancedMounts: @@ -92,3 +87,7 @@ audiobookshelf: main: - path: /mnt/store/ readOnly: false +volsync-target-config: + pvcTarget: audiobookshelf-config +volsync-target-metadata: + pvcTarget: audiobookshelf-metadata