From da3296954f2557d99c1ab4cb57ca46c8972950b2 Mon Sep 17 00:00:00 2001 From: gitea-bot Date: Wed, 24 Dec 2025 20:12:31 +0000 Subject: [PATCH 1/2] chore: Update manifests after change --- .../manifests/blocky/ConfigMap-blocky.yaml | 2 + .../manifests/blocky/Deployment-blocky.yaml | 2 +- .../manifests/gatus/ConfigMap-gatus.yaml | 36 ++++++--- .../manifests/gatus/Deployment-gatus.yaml | 2 +- .../homepage/ConfigMap-homepage.yaml | 24 +++--- .../homepage/Deployment-homepage.yaml | 2 +- .../Deployment-navidrome-feishin.yaml | 48 ++++++++++++ .../navidrome/Deployment-navidrome-main.yaml | 76 +++++++++++++++++++ ...navidrome-data-backup-secret-external.yaml | 58 ++++++++++++++ ...et-navidrome-data-backup-secret-local.yaml | 58 ++++++++++++++ ...t-navidrome-data-backup-secret-remote.yaml | 58 ++++++++++++++ .../HTTPRoute-navidrome-feishin.yaml | 30 ++++++++ .../navidrome/HTTPRoute-navidrome-main.yaml | 30 ++++++++ ...entVolume-navidrome-music-nfs-storage.yaml | 23 ++++++ .../PersistentVolumeClaim-navidrome-data.yaml | 17 +++++ ...lumeClaim-navidrome-music-nfs-storage.yaml | 17 +++++ ...navidrome-data-backup-source-external.yaml | 34 +++++++++ ...ce-navidrome-data-backup-source-local.yaml | 34 +++++++++ ...e-navidrome-data-backup-source-remote.yaml | 34 +++++++++ .../navidrome/Service-navidrome-feishin.yaml | 22 ++++++ .../navidrome/Service-navidrome-main.yaml | 22 ++++++ .../navidrome/ServiceMonitor-navidrome.yaml | 25 ++++++ 22 files changed, 630 insertions(+), 24 deletions(-) create mode 100644 clusters/cl01tl/manifests/navidrome/Deployment-navidrome-feishin.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/Deployment-navidrome-main.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-external.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-local.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-remote.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/PersistentVolume-navidrome-music-nfs-storage.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-data.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-music-nfs-storage.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-external.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-local.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-remote.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/Service-navidrome-feishin.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/Service-navidrome-main.yaml create mode 100644 clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml diff --git a/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml b/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml index 0caabbfd1..a0cee7602 100644 --- a/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml +++ b/clusters/cl01tl/manifests/blocky/ConfigMap-blocky.yaml @@ -102,6 +102,7 @@ data: ceph IN CNAME traefik-cl01tl code-server IN CNAME traefik-cl01tl ephemera IN CNAME traefik-cl01tl + feishin IN CNAME traefik-cl01tl garage-s3 IN CNAME traefik-cl01tl garage-webui IN CNAME traefik-cl01tl gatus IN CNAME traefik-cl01tl @@ -124,6 +125,7 @@ data: listenarr IN CNAME traefik-cl01tl mail IN CNAME traefik-cl01tl n8n IN CNAME traefik-cl01tl + navidrome IN CNAME traefik-cl01tl ntfy IN CNAME traefik-cl01tl objects IN CNAME traefik-cl01tl ollama IN CNAME traefik-cl01tl diff --git a/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml b/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml index 70aef687f..8ca40b4f4 100644 --- a/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml +++ b/clusters/cl01tl/manifests/blocky/Deployment-blocky.yaml @@ -22,7 +22,7 @@ spec: template: metadata: annotations: - checksum/configMaps: ca1ae3096857637a277dd8fc4536a8a2e830f60b13a7737ce35e587dd1c0f162 + checksum/configMaps: 0d72ae2a8abbffc7aa6b92f8004bb9909c3dfd10167c2056df64e4d5c614dea2 labels: app.kubernetes.io/controller: main app.kubernetes.io/instance: blocky diff --git a/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml b/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml index b799478b4..d4c7e17c8 100644 --- a/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml +++ b/clusters/cl01tl/manifests/gatus/ConfigMap-gatus.yaml @@ -87,6 +87,33 @@ data: interval: 30s name: tubearchivist url: https://tubearchivist.alexlebens.net + - alerts: + - type: ntfy + conditions: + - '[STATUS] == 200' + - '[CERTIFICATE_EXPIRATION] > 240h' + group: core + interval: 30s + name: navidrome + url: https://navidrome.alexlebens.net + - alerts: + - type: ntfy + conditions: + - '[STATUS] == 200' + - '[CERTIFICATE_EXPIRATION] > 240h' + group: core + interval: 30s + name: feishin + url: https://feishin.alexlebens.net + - alerts: + - type: ntfy + conditions: + - '[STATUS] == 200' + - '[CERTIFICATE_EXPIRATION] > 240h' + group: core + interval: 30s + name: audiobookshelf + url: https://audiobookshelf.alexlebens.net - alerts: - type: ntfy conditions: @@ -105,15 +132,6 @@ data: interval: 30s name: photoview url: https://photoview.alexlebens.net - - alerts: - - type: ntfy - conditions: - - '[STATUS] == 200' - - '[CERTIFICATE_EXPIRATION] > 240h' - group: core - interval: 30s - name: audiobookshelf - url: https://audiobookshelf.alexlebens.net - alerts: - type: ntfy conditions: diff --git a/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml b/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml index ac6755ccb..f7c40f34b 100644 --- a/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml +++ b/clusters/cl01tl/manifests/gatus/Deployment-gatus.yaml @@ -26,7 +26,7 @@ spec: app.kubernetes.io/name: gatus app.kubernetes.io/instance: gatus annotations: - checksum/config: a6c43532a3267641707429bcbfbafd95fd086e2ed99ca84c90cac752dd882074 + checksum/config: e60422d26b228fd76e8325e351f264759f1491f593f751f33793dd2c178df3ec spec: serviceAccountName: default automountServiceAccountToken: false diff --git a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml index a59d90b70..86239f97b 100644 --- a/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml +++ b/clusters/cl01tl/manifests/homepage/ConfigMap-homepage.yaml @@ -62,12 +62,6 @@ data: mode: cluster services.yaml: | - Media: - - Plex: - icon: sh-plex.webp - description: Media server - href: https://plex.alexlebens.net - siteMonitor: http://plex.plex:32400 - statusStyle: dot - Jellyfin: icon: sh-jellyfin.webp description: Media server @@ -98,6 +92,18 @@ data: href: https://tubearchivist.alexlebens.net/login siteMonitor: http://tubearchivist.tubearchivist:80 statusStyle: dot + - Music: + icon: sh-feishin.webp + description: Feishin + href: https://feishin.alexlebens.net + siteMonitor: http://navidrome-feishin.navidrome:80 + statusStyle: dot + - Podcasts and Audiobooks: + icon: sh-audiobookshelf.webp + description: Audiobookshelf + href: https://audiobookshelf.alexlebens.net + siteMonitor: http://audiobookshelf.audiobookshelf:80 + statusStyle: dot - Photos: icon: sh-immich.webp description: Immich @@ -110,12 +116,6 @@ data: href: https://photoview.alexlebens.net siteMonitor: http://photoview.photoview:80 statusStyle: dot - - Podcasts and Audiobooks: - icon: sh-audiobookshelf.webp - description: Audiobookshelf - href: https://audiobookshelf.alexlebens.net - siteMonitor: http://audiobookshelf.audiobookshelf:80 - statusStyle: dot - Books: icon: sh-booklore.webp description: Booklore diff --git a/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml b/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml index 687c3cefc..637c63458 100644 --- a/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml +++ b/clusters/cl01tl/manifests/homepage/Deployment-homepage.yaml @@ -24,7 +24,7 @@ spec: template: metadata: annotations: - checksum/configMaps: c16ee2840048690a8d35c3758e398da07fd7be50b7e003b5eae19bddc1b39a52 + checksum/configMaps: b1e2b03622fb55bc6de050a2d7717df58866011e3ae1c77bbd4a96a93e0a2285 checksum/secrets: d3ba83f111cd32f92c909268c55ad8bbd4f9e299b74b35b33c1a011180d8b378 labels: app.kubernetes.io/controller: main diff --git a/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-feishin.yaml b/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-feishin.yaml new file mode 100644 index 000000000..dc5b784cb --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-feishin.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: navidrome-feishin + labels: + app.kubernetes.io/controller: feishin + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + revisionHistoryLimit: 3 + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/controller: feishin + app.kubernetes.io/name: navidrome + app.kubernetes.io/instance: navidrome + template: + metadata: + labels: + app.kubernetes.io/controller: feishin + app.kubernetes.io/instance: navidrome + app.kubernetes.io/name: navidrome + spec: + enableServiceLinks: false + serviceAccountName: default + automountServiceAccountToken: true + hostIPC: false + hostNetwork: false + hostPID: false + dnsPolicy: ClusterFirst + containers: + - env: + - name: SERVER_NAME + value: talos + - name: SERVER_LOCK + value: "true" + - name: SERVER_TYPE + value: navidrome + - name: SERVER_URL + value: http://navidrome-main.navidrome:80 + image: ghcr.io/jeffvli/feishin:1.0.1-beta.1@sha256:61239641f23a33f99c2858419b14afb66683f3cd82010363fba92be3993fd894 + imagePullPolicy: IfNotPresent + name: main diff --git a/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-main.yaml b/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-main.yaml new file mode 100644 index 000000000..479d9ce75 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/Deployment-navidrome-main.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: navidrome-main + labels: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + revisionHistoryLimit: 3 + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/controller: main + app.kubernetes.io/name: navidrome + app.kubernetes.io/instance: navidrome + template: + metadata: + labels: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: navidrome + app.kubernetes.io/name: navidrome + spec: + enableServiceLinks: false + serviceAccountName: default + automountServiceAccountToken: true + hostIPC: false + hostNetwork: false + hostPID: false + dnsPolicy: ClusterFirst + containers: + - env: + - name: ND_MUSICFOLDER + value: /music + - name: ND_DATAFOLDER + value: /data + - name: ND_CACHEFOLDER + value: /cache + - name: ND_BASEURL + value: docker + - name: ND_ENABLEINSIGHTSCOLLECTOR + value: "false" + - name: ND_PROMETHEUS_ENABLED + value: "true" + image: deluan/navidrome:0.59.0@sha256:4edc8a1de3e042f30b78a478325839f4395177eb8201c27543dccc0eba674f23 + imagePullPolicy: IfNotPresent + name: main + resources: + limits: + gpu.intel.com/i915: 1 + requests: + cpu: 10m + gpu.intel.com/i915: 1 + memory: 128Mi + volumeMounts: + - mountPath: /cache + name: cache + - mountPath: /data + name: data + - mountPath: /mnt/store/Music + name: music + readOnly: true + volumes: + - emptyDir: {} + name: cache + - name: data + persistentVolumeClaim: + claimName: navidrome-data + - name: music + persistentVolumeClaim: + claimName: navidrome-music-nfs-storage diff --git a/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-external.yaml b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-external.yaml new file mode 100644 index 000000000..ddd4cbd66 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-external.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: navidrome-data-backup-secret-external + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup-secret-external +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/navidrome/navidrome-data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/digital-ocean + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + 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: AWS_ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: AWS_SECRET_ACCESS_KEY diff --git a/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-local.yaml b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-local.yaml new file mode 100644 index 000000000..13128619c --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-local.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: navidrome-data-backup-secret-local + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup-secret-local +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/navidrome/navidrome-data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-local + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-remote.yaml b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-remote.yaml new file mode 100644 index 000000000..6d8982ba4 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ExternalSecret-navidrome-data-backup-secret-remote.yaml @@ -0,0 +1,58 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: navidrome-data-backup-secret-remote + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup-secret-remote +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/navidrome/navidrome-data" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-remote + metadataPolicy: None + property: BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /volsync/restic/garage-remote + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_REGION + - secretKey: AWS_ACCESS_KEY_ID + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_KEY_ID + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /garage/home-infra/volsync-backups + metadataPolicy: None + property: ACCESS_SECRET_KEY diff --git a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml new file mode 100644 index 000000000..f5b534beb --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml @@ -0,0 +1,30 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: navidrome-feishin + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - "feishin.alexlebens.net" + rules: + - backendRefs: + - group: "" + kind: Service + name: feishin + namespace: navidrome + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / diff --git a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml new file mode 100644 index 000000000..8143bfc49 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml @@ -0,0 +1,30 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: navidrome-main + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - "navidrome.alexlebens.net" + rules: + - backendRefs: + - group: "" + kind: Service + name: navidrome + namespace: navidrome + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / diff --git a/clusters/cl01tl/manifests/navidrome/PersistentVolume-navidrome-music-nfs-storage.yaml b/clusters/cl01tl/manifests/navidrome/PersistentVolume-navidrome-music-nfs-storage.yaml new file mode 100644 index 000000000..608f098b5 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/PersistentVolume-navidrome-music-nfs-storage.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: navidrome-music-nfs-storage + namespace: navidrome + labels: + app.kubernetes.io/name: navidrome-music-nfs-storage + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome +spec: + persistentVolumeReclaimPolicy: Retain + storageClassName: nfs-client + capacity: + storage: 1Gi + accessModes: + - ReadWriteMany + nfs: + path: /volume2/Storage/Music + server: synologybond.alexlebens.net + mountOptions: + - vers=4 + - minorversion=1 + - noac diff --git a/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-data.yaml b/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-data.yaml new file mode 100644 index 000000000..40a2808ed --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-data.yaml @@ -0,0 +1,17 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: navidrome-data + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "10Gi" + storageClassName: "ceph-block" diff --git a/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-music-nfs-storage.yaml b/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-music-nfs-storage.yaml new file mode 100644 index 000000000..860c7ba80 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/PersistentVolumeClaim-navidrome-music-nfs-storage.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: navidrome-music-nfs-storage + namespace: navidrome + labels: + app.kubernetes.io/name: navidrome-music-nfs-storage + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome +spec: + volumeName: navidrome-music-nfs-storage + storageClassName: nfs-client + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi diff --git a/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-external.yaml b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-external.yaml new file mode 100644 index 000000000..c60bc4ace --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-external.yaml @@ -0,0 +1,34 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: navidrome-data-backup-source-external + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup +spec: + sourcePVC: navidrome-data + trigger: + schedule: 0 9 * * * + restic: + pruneIntervalDays: 7 + repository: navidrome-data-backup-secret-external + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + moverSecurityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + runAsGroup: 1000 + runAsUser: 1000 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-local.yaml b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-local.yaml new file mode 100644 index 000000000..ddca1751b --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-local.yaml @@ -0,0 +1,34 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: navidrome-data-backup-source-local + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup +spec: + sourcePVC: navidrome-data + trigger: + schedule: 0 8 * * * + restic: + pruneIntervalDays: 7 + repository: navidrome-data-backup-secret-local + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + moverSecurityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + runAsGroup: 1000 + runAsUser: 1000 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-remote.yaml b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-remote.yaml new file mode 100644 index 000000000..e03a23f9a --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ReplicationSource-navidrome-data-backup-source-remote.yaml @@ -0,0 +1,34 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: navidrome-data-backup-source-remote + namespace: navidrome + labels: + helm.sh/chart: volsync-target-data-0.6.0 + app.kubernetes.io/instance: navidrome + app.kubernetes.io/part-of: navidrome + app.kubernetes.io/version: "0.6.0" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome-data-backup +spec: + sourcePVC: navidrome-data + trigger: + schedule: 0 10 * * * + restic: + pruneIntervalDays: 7 + repository: navidrome-data-backup-secret-remote + retain: + daily: 7 + hourly: 0 + monthly: 3 + weekly: 4 + yearly: 1 + moverSecurityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + runAsGroup: 1000 + runAsUser: 1000 + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot + cacheCapacity: 1Gi diff --git a/clusters/cl01tl/manifests/navidrome/Service-navidrome-feishin.yaml b/clusters/cl01tl/manifests/navidrome/Service-navidrome-feishin.yaml new file mode 100644 index 000000000..c507b8491 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/Service-navidrome-feishin.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: navidrome-feishin + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + app.kubernetes.io/service: navidrome-feishin + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 9180 + protocol: TCP + name: http + selector: + app.kubernetes.io/controller: feishin + app.kubernetes.io/instance: navidrome + app.kubernetes.io/name: navidrome diff --git a/clusters/cl01tl/manifests/navidrome/Service-navidrome-main.yaml b/clusters/cl01tl/manifests/navidrome/Service-navidrome-main.yaml new file mode 100644 index 000000000..303b21044 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/Service-navidrome-main.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: navidrome-main + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + app.kubernetes.io/service: navidrome-main + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 4533 + protocol: TCP + name: http + selector: + app.kubernetes.io/controller: main + app.kubernetes.io/instance: navidrome + app.kubernetes.io/name: navidrome diff --git a/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml b/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml new file mode 100644 index 000000000..837c83929 --- /dev/null +++ b/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml @@ -0,0 +1,25 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: navidrome + labels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: navidrome + helm.sh/chart: navidrome-4.5.0 + namespace: navidrome +spec: + jobLabel: "navidrome" + namespaceSelector: + matchNames: + - navidrome + selector: + matchLabels: + app.kubernetes.io/instance: navidrome + app.kubernetes.io/name: navidrome + endpoints: + - interval: 30s + path: /metrics + port: http + scheme: http + scrapeTimeout: 15s -- 2.49.1 From 83621390a9beffb98b1a5d8a1f30a0f41ca7f08d Mon Sep 17 00:00:00 2001 From: gitea-bot Date: Wed, 24 Dec 2025 20:19:08 +0000 Subject: [PATCH 2/2] chore: Update manifests after change --- .../cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml | 2 +- .../cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml | 2 +- .../cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml index f5b534beb..36251755d 100644 --- a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml +++ b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-feishin.yaml @@ -20,7 +20,7 @@ spec: - backendRefs: - group: "" kind: Service - name: feishin + name: navidrome-feishin namespace: navidrome port: 80 weight: 100 diff --git a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml index 8143bfc49..e938cc5fe 100644 --- a/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml +++ b/clusters/cl01tl/manifests/navidrome/HTTPRoute-navidrome-main.yaml @@ -20,7 +20,7 @@ spec: - backendRefs: - group: "" kind: Service - name: navidrome + name: navidrome-main namespace: navidrome port: 80 weight: 100 diff --git a/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml b/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml index 837c83929..f05c5e8da 100644 --- a/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml +++ b/clusters/cl01tl/manifests/navidrome/ServiceMonitor-navidrome.yaml @@ -17,6 +17,7 @@ spec: matchLabels: app.kubernetes.io/instance: navidrome app.kubernetes.io/name: navidrome + app.kubernetes.io/service: navidrome-main endpoints: - interval: 30s path: /metrics -- 2.49.1