diff --git a/clusters/cl01tl/helm/seerr/templates/http-route.yaml b/clusters/cl01tl/helm/seerr/templates/http-route.yaml index 860422246..ea2362bb5 100644 --- a/clusters/cl01tl/helm/seerr/templates/http-route.yaml +++ b/clusters/cl01tl/helm/seerr/templates/http-route.yaml @@ -1,10 +1,10 @@ apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: - name: http-route-seerr + name: seerr namespace: {{ .Release.Namespace }} labels: - app.kubernetes.io/name: http-route-seerr + app.kubernetes.io/name: seerr app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }} spec: diff --git a/clusters/cl01tl/helm/shelly-plug/templates/service-monitor.yaml b/clusters/cl01tl/helm/shelly-plug/templates/service-monitor.yaml deleted file mode 100644 index e2070e4a4..000000000 --- a/clusters/cl01tl/helm/shelly-plug/templates/service-monitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: shelly-plug - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: shelly-plug - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: shelly-plug - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: metrics - interval: 30s - scrapeTimeout: 10s - path: /metrics diff --git a/clusters/cl01tl/helm/shelly-plug/values.yaml b/clusters/cl01tl/helm/shelly-plug/values.yaml index 31b3770f8..04622a740 100644 --- a/clusters/cl01tl/helm/shelly-plug/values.yaml +++ b/clusters/cl01tl/helm/shelly-plug/values.yaml @@ -58,6 +58,18 @@ shelly-plug: port: 80 targetPort: 80 protocol: TCP + serviceMonitor: + main: + selector: + matchLabels: + app.kubernetes.io/name: shelly-plug + app.kubernetes.io/instance: shelly-plug + serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' + endpoints: + - port: metrics + interval: 30s + scrapeTimeout: 10s + path: /metrics persistence: script: storageClass: ceph-block diff --git a/clusters/cl01tl/helm/slskd/Chart.yaml b/clusters/cl01tl/helm/slskd/Chart.yaml index 775cd6338..9c79fc120 100644 --- a/clusters/cl01tl/helm/slskd/Chart.yaml +++ b/clusters/cl01tl/helm/slskd/Chart.yaml @@ -22,4 +22,5 @@ dependencies: repository: https://bjw-s-labs.github.io/helm-charts/ version: 4.5.0 icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png +# renovate: github=slskd/slskd appVersion: 0.24.1 diff --git a/clusters/cl01tl/helm/slskd/templates/http-route.yaml b/clusters/cl01tl/helm/slskd/templates/http-route.yaml deleted file mode 100644 index 5701ed24c..000000000 --- a/clusters/cl01tl/helm/slskd/templates/http-route.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: http-route-slskd - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: http-route-slskd - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - parentRefs: - - group: gateway.networking.k8s.io - kind: Gateway - name: traefik-gateway - namespace: traefik - hostnames: - - slskd.alexlebens.net - rules: - - matches: - - path: - type: PathPrefix - value: / - backendRefs: - - group: '' - kind: Service - name: slskd - port: 5030 - weight: 100 diff --git a/clusters/cl01tl/helm/slskd/templates/service-monitor.yaml b/clusters/cl01tl/helm/slskd/templates/service-monitor.yaml deleted file mode 100644 index caf82f4ee..000000000 --- a/clusters/cl01tl/helm/slskd/templates/service-monitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: slskd - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: slskd - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: slskd - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: http - interval: 3m - scrapeTimeout: 1m - path: /metrics diff --git a/clusters/cl01tl/helm/slskd/values.yaml b/clusters/cl01tl/helm/slskd/values.yaml index f951f7ac0..f5c839078 100644 --- a/clusters/cl01tl/helm/slskd/values.yaml +++ b/clusters/cl01tl/helm/slskd/values.yaml @@ -117,6 +117,39 @@ slskd: port: 5030 targetPort: 5030 protocol: HTTP + serviceMonitor: + main: + selector: + matchLabels: + app.kubernetes.io/name: slskd + app.kubernetes.io/instance: slskd + serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' + endpoints: + - port: http + interval: 3m + scrapeTimeout: 1m + path: /metrics + route: + main: + kind: HTTPRoute + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - slskd.alexlebens.net + rules: + - backendRefs: + - group: '' + kind: Service + name: slskd + port: 5030 + weight: 100 + matches: + - path: + type: PathPrefix + value: / persistence: slskd-config: enabled: true diff --git a/clusters/cl01tl/helm/snapshot-controller/Chart.yaml b/clusters/cl01tl/helm/snapshot-controller/Chart.yaml index 79cf9ec4a..63f18357d 100644 --- a/clusters/cl01tl/helm/snapshot-controller/Chart.yaml +++ b/clusters/cl01tl/helm/snapshot-controller/Chart.yaml @@ -18,4 +18,5 @@ dependencies: version: 4.2.0 repository: https://piraeus.io/helm-charts/ icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kubernetes.png +# renovate: github=kubernetes-csi/external-snapshotter appVersion: v8.4.0 diff --git a/clusters/cl01tl/helm/sonarr-4k/Chart.lock b/clusters/cl01tl/helm/sonarr-4k/Chart.lock index 6e04f39a6..bb13dfcd8 100644 --- a/clusters/cl01tl/helm/sonarr-4k/Chart.lock +++ b/clusters/cl01tl/helm/sonarr-4k/Chart.lock @@ -4,9 +4,9 @@ dependencies: version: 4.5.0 - name: postgres-cluster repository: oci://harbor.alexlebens.net/helm-charts - version: 7.1.4 + version: 7.4.3 - name: volsync-target repository: oci://harbor.alexlebens.net/helm-charts version: 0.6.0 -digest: sha256:14a55afad20d644f4296a33cea5cfe1981ed8aca6e86578750071481df00d7c5 -generated: "2025-12-21T19:06:57.636330697Z" +digest: sha256:27a29ef32a5c80bee9d8d76f7d6b9fe5017ca5d32145db670b2d97351b62cb06 +generated: "2025-12-24T00:06:26.378963-06:00" diff --git a/clusters/cl01tl/helm/sonarr-4k/Chart.yaml b/clusters/cl01tl/helm/sonarr-4k/Chart.yaml index 9430be56a..201ae132e 100644 --- a/clusters/cl01tl/helm/sonarr-4k/Chart.yaml +++ b/clusters/cl01tl/helm/sonarr-4k/Chart.yaml @@ -27,11 +27,12 @@ dependencies: version: 4.5.0 - name: postgres-cluster alias: postgres-18-cluster - version: 7.1.4 + version: 7.4.3 repository: oci://harbor.alexlebens.net/helm-charts - name: volsync-target alias: volsync-target-config version: 0.6.0 repository: oci://harbor.alexlebens.net/helm-charts icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png +# renovate: github=linuxserver/sonarr appVersion: 4.0.14 diff --git a/clusters/cl01tl/helm/sonarr-4k/templates/external-secret.yaml b/clusters/cl01tl/helm/sonarr-4k/templates/external-secret.yaml deleted file mode 100644 index 7a5a50904..000000000 --- a/clusters/cl01tl/helm/sonarr-4k/templates/external-secret.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-4k-postgresql-18-cluster-backup-secret - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-4k-postgresql-18-cluster-backup-secret - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: access - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: secret - ---- -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-4k-postgresql-18-cluster-backup-secret-garage - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-4k-postgresql-18-cluster-backup-secret-garage - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_KEY_ID - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_SECRET_KEY - - secretKey: ACCESS_REGION - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_REGION diff --git a/clusters/cl01tl/helm/sonarr-4k/templates/http-route.yaml b/clusters/cl01tl/helm/sonarr-4k/templates/http-route.yaml deleted file mode 100644 index bdfd2a4f8..000000000 --- a/clusters/cl01tl/helm/sonarr-4k/templates/http-route.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: http-route-sonarr-4k - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: http-route-sonarr-4k - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - parentRefs: - - group: gateway.networking.k8s.io - kind: Gateway - name: traefik-gateway - namespace: traefik - hostnames: - - sonarr-4k.alexlebens.net - rules: - - matches: - - path: - type: PathPrefix - value: / - backendRefs: - - group: '' - kind: Service - name: sonarr-4k - port: 80 - weight: 100 diff --git a/clusters/cl01tl/helm/sonarr-4k/templates/service-monitor.yaml b/clusters/cl01tl/helm/sonarr-4k/templates/service-monitor.yaml deleted file mode 100644 index 3b87474f0..000000000 --- a/clusters/cl01tl/helm/sonarr-4k/templates/service-monitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: sonarr-4k - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-4k - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: sonarr-4k - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: metrics - interval: 3m - scrapeTimeout: 1m - path: /metrics diff --git a/clusters/cl01tl/helm/sonarr-4k/values.yaml b/clusters/cl01tl/helm/sonarr-4k/values.yaml index faeda581d..1dabe840e 100644 --- a/clusters/cl01tl/helm/sonarr-4k/values.yaml +++ b/clusters/cl01tl/helm/sonarr-4k/values.yaml @@ -59,6 +59,39 @@ sonarr-4k: port: 9794 targetPort: 9794 protocol: TCP + serviceMonitor: + main: + selector: + matchLabels: + app.kubernetes.io/name: sonarr-4k + app.kubernetes.io/instance: sonarr-4k + serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' + endpoints: + - port: metrics + interval: 3m + scrapeTimeout: 1m + path: /metrics + route: + main: + kind: HTTPRoute + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - sonarr-4k.alexlebens.net + rules: + - backendRefs: + - group: '' + kind: Service + name: sonarr-4k + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / persistence: config: forceRename: sonarr-4k-config @@ -84,64 +117,50 @@ sonarr-4k: postgres-18-cluster: mode: recovery cluster: - storage: - storageClass: local-path - walStorage: - storageClass: local-path initdb: - database: app - owner: app postInitSQL: - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; recovery: method: objectStore objectStore: - destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster - endpointURL: http://garage-main.garage:3900 index: 1 - endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage backup: objectStore: - name: garage-local - destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster index: 1 - endpointURL: http://garage-main.garage:3900 - endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage - endpointCredentialsIncludeRegion: true - retentionPolicy: "3d" + destinationBucket: postgres-backups + externalSecretCredentialPath: /garage/home-infra/postgres-backups isWALArchiver: true - # - name: external - # destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster - # index: 1 - # endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret - # retentionPolicy: "30d" - # isWALArchiver: false # - name: garage-remote - # destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster # index: 1 - # endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900 - # endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage - # retentionPolicy: "30d" + # destinationBucket: postgres-backups + # externalSecretCredentialPath: /garage/home-infra/postgres-backups + # retentionPolicy: "90d" # data: # compression: bzip2 - # jobs: 2 + # - name: external + # index: 1 + # endpointURL: https://nyc3.digitaloceanspaces.com + # destinationBucket: postgres-backups-ce540ddf106d186bbddca68a + # externalSecretCredentialPath: /garage/home-infra/postgres-backups + # isWALArchiver: false scheduledBackups: - name: live-backup suspend: false immediate: true schedule: "0 0 0 * * *" backupName: garage-local - # - name: daily-backup - # suspend: false - # immediate: true - # schedule: "0 0 0 * * *" - # backupName: external # - name: weekly-backup # suspend: true # immediate: true # schedule: "0 0 4 * * SAT" # backupName: garage-remote + # - name: daily-backup + # suspend: true + # immediate: true + # schedule: "0 0 0 * * *" + # backupName: external volsync-target-config: pvcTarget: sonarr-4k-config moverSecurityContext: diff --git a/clusters/cl01tl/helm/sonarr-anime/Chart.lock b/clusters/cl01tl/helm/sonarr-anime/Chart.lock index 453c584d0..098955a81 100644 --- a/clusters/cl01tl/helm/sonarr-anime/Chart.lock +++ b/clusters/cl01tl/helm/sonarr-anime/Chart.lock @@ -4,9 +4,9 @@ dependencies: version: 4.5.0 - name: postgres-cluster repository: oci://harbor.alexlebens.net/helm-charts - version: 7.1.4 + version: 7.4.3 - name: volsync-target repository: oci://harbor.alexlebens.net/helm-charts version: 0.6.0 -digest: sha256:8e6423c96c136039dd92f1f2f8ae3dd50f5f20dfdb1e47556ed3e0163d241aca -generated: "2025-12-21T19:07:12.568573834Z" +digest: sha256:324fe0c8c4492572912c50624a47f9350f0eb9471fa93ca24c3d9ce825a562c9 +generated: "2025-12-24T00:06:34.718214-06:00" diff --git a/clusters/cl01tl/helm/sonarr-anime/Chart.yaml b/clusters/cl01tl/helm/sonarr-anime/Chart.yaml index 78f790d75..c7cdab74b 100644 --- a/clusters/cl01tl/helm/sonarr-anime/Chart.yaml +++ b/clusters/cl01tl/helm/sonarr-anime/Chart.yaml @@ -26,11 +26,12 @@ dependencies: version: 4.5.0 - name: postgres-cluster alias: postgres-18-cluster - version: 7.1.4 + version: 7.4.3 repository: oci://harbor.alexlebens.net/helm-charts - name: volsync-target alias: volsync-target-config version: 0.6.0 repository: oci://harbor.alexlebens.net/helm-charts icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png +# renovate: github=linuxserver/sonarr appVersion: 4.0.14 diff --git a/clusters/cl01tl/helm/sonarr-anime/templates/external-secret.yaml b/clusters/cl01tl/helm/sonarr-anime/templates/external-secret.yaml deleted file mode 100644 index 619313a6b..000000000 --- a/clusters/cl01tl/helm/sonarr-anime/templates/external-secret.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-anime-postgresql-18-cluster-backup-secret - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-anime-postgresql-18-cluster-backup-secret - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: access - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: secret - ---- -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-anime-postgresql-18-cluster-backup-secret-garage - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-anime-postgresql-18-cluster-backup-secret-garage - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_KEY_ID - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_SECRET_KEY - - secretKey: ACCESS_REGION - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_REGION diff --git a/clusters/cl01tl/helm/sonarr-anime/templates/http-route.yaml b/clusters/cl01tl/helm/sonarr-anime/templates/http-route.yaml deleted file mode 100644 index 1b468f31c..000000000 --- a/clusters/cl01tl/helm/sonarr-anime/templates/http-route.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: http-route-sonarr-anime - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: http-route-sonarr-anime - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - parentRefs: - - group: gateway.networking.k8s.io - kind: Gateway - name: traefik-gateway - namespace: traefik - hostnames: - - sonarr-anime.alexlebens.net - rules: - - matches: - - path: - type: PathPrefix - value: / - backendRefs: - - group: '' - kind: Service - name: sonarr-anime - port: 80 - weight: 100 diff --git a/clusters/cl01tl/helm/sonarr-anime/templates/service-monitor.yaml b/clusters/cl01tl/helm/sonarr-anime/templates/service-monitor.yaml deleted file mode 100644 index 6e46f252a..000000000 --- a/clusters/cl01tl/helm/sonarr-anime/templates/service-monitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: sonarr-anime - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-anime - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: sonarr-anime - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: metrics - interval: 3m - scrapeTimeout: 1m - path: /metrics diff --git a/clusters/cl01tl/helm/sonarr-anime/values.yaml b/clusters/cl01tl/helm/sonarr-anime/values.yaml index 9ce385eaa..8c626d5bc 100644 --- a/clusters/cl01tl/helm/sonarr-anime/values.yaml +++ b/clusters/cl01tl/helm/sonarr-anime/values.yaml @@ -59,6 +59,39 @@ sonarr-anime: port: 9794 targetPort: 9794 protocol: TCP + serviceMonitor: + main: + selector: + matchLabels: + app.kubernetes.io/name: sonarr-anime + app.kubernetes.io/instance: sonarr-anime + serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' + endpoints: + - port: metrics + interval: 3m + scrapeTimeout: 1m + path: /metrics + route: + main: + kind: HTTPRoute + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - sonarr-anime.alexlebens.net + rules: + - backendRefs: + - group: '' + kind: Service + name: sonarr-anime + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / persistence: config: forceRename: sonarr-anime-config @@ -84,64 +117,50 @@ sonarr-anime: postgres-18-cluster: mode: recovery cluster: - storage: - storageClass: local-path - walStorage: - storageClass: local-path initdb: - database: app - owner: app postInitSQL: - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; recovery: method: objectStore objectStore: - destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster - endpointURL: http://garage-main.garage:3900 index: 1 - endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage backup: objectStore: - name: garage-local - destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster index: 1 - endpointURL: http://garage-main.garage:3900 - endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage - endpointCredentialsIncludeRegion: true - retentionPolicy: "3d" + destinationBucket: postgres-backups + externalSecretCredentialPath: /garage/home-infra/postgres-backups isWALArchiver: true - # - name: external - # destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster + # - name: garage-remote # index: 1 - # endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret - # retentionPolicy: "30d" + # destinationBucket: postgres-backups + # externalSecretCredentialPath: /garage/home-infra/postgres-backups + # retentionPolicy: "90d" + # data: + # compression: bzip2 + # - name: external + # index: 1 + # endpointURL: https://nyc3.digitaloceanspaces.com + # destinationBucket: postgres-backups-ce540ddf106d186bbddca68a + # externalSecretCredentialPath: /garage/home-infra/postgres-backups # isWALArchiver: false - # - name: garage-remote - # destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster - # index: 1 - # endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900 - # endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage - # retentionPolicy: "30d" - # data: - # compression: bzip2 - # jobs: 2 scheduledBackups: - name: live-backup suspend: false immediate: true schedule: "0 0 0 * * *" backupName: garage-local - # - name: daily-backup - # suspend: false - # immediate: true - # schedule: "0 0 0 * * *" - # backupName: external # - name: weekly-backup # suspend: true # immediate: true # schedule: "0 0 4 * * SAT" # backupName: garage-remote + # - name: daily-backup + # suspend: true + # immediate: true + # schedule: "0 0 0 * * *" + # backupName: external volsync-target-config: pvcTarget: sonarr-anime-config moverSecurityContext: diff --git a/clusters/cl01tl/helm/sonarr/Chart.lock b/clusters/cl01tl/helm/sonarr/Chart.lock index 84b7ae38d..db4e0c9df 100644 --- a/clusters/cl01tl/helm/sonarr/Chart.lock +++ b/clusters/cl01tl/helm/sonarr/Chart.lock @@ -4,9 +4,9 @@ dependencies: version: 4.5.0 - name: postgres-cluster repository: oci://harbor.alexlebens.net/helm-charts - version: 7.1.4 + version: 7.4.3 - name: volsync-target repository: oci://harbor.alexlebens.net/helm-charts version: 0.6.0 -digest: sha256:25518e72f0e08cf246a831f8ad7289a39f2a69783b2be16b4e5821f0ca7ec82a -generated: "2025-12-21T19:07:26.935967475Z" +digest: sha256:4b717a89825e34b7d6ba77d8198c07d82107565325d78b99866d09e3c8974213 +generated: "2025-12-24T00:06:09.13493-06:00" diff --git a/clusters/cl01tl/helm/sonarr/Chart.yaml b/clusters/cl01tl/helm/sonarr/Chart.yaml index 08fec8406..9b9c35557 100644 --- a/clusters/cl01tl/helm/sonarr/Chart.yaml +++ b/clusters/cl01tl/helm/sonarr/Chart.yaml @@ -26,11 +26,12 @@ dependencies: version: 4.5.0 - name: postgres-cluster alias: postgres-18-cluster - version: 7.1.4 + version: 7.4.3 repository: oci://harbor.alexlebens.net/helm-charts - name: volsync-target alias: volsync-target-config version: 0.6.0 repository: oci://harbor.alexlebens.net/helm-charts icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png +# renovate: github=linuxserver/sonarr appVersion: 4.0.16 diff --git a/clusters/cl01tl/helm/sonarr/templates/external-secret.yaml b/clusters/cl01tl/helm/sonarr/templates/external-secret.yaml deleted file mode 100644 index 2835f8280..000000000 --- a/clusters/cl01tl/helm/sonarr/templates/external-secret.yaml +++ /dev/null @@ -1,65 +0,0 @@ -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-postgresql-18-cluster-backup-secret - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-postgresql-18-cluster-backup-secret - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: access - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /digital-ocean/home-infra/postgres-backups - metadataPolicy: None - property: secret - ---- -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: sonarr-postgresql-18-cluster-backup-secret-garage - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr-postgresql-18-cluster-backup-secret-garage - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - secretStoreRef: - kind: ClusterSecretStore - name: vault - data: - - secretKey: ACCESS_KEY_ID - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_KEY_ID - - secretKey: ACCESS_SECRET_KEY - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_SECRET_KEY - - secretKey: ACCESS_REGION - remoteRef: - conversionStrategy: Default - decodingStrategy: None - key: /garage/home-infra/postgres-backups - metadataPolicy: None - property: ACCESS_REGION diff --git a/clusters/cl01tl/helm/sonarr/templates/http-route.yaml b/clusters/cl01tl/helm/sonarr/templates/http-route.yaml deleted file mode 100644 index dccafa675..000000000 --- a/clusters/cl01tl/helm/sonarr/templates/http-route.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: http-route-sonarr - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: http-route-sonarr - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - parentRefs: - - group: gateway.networking.k8s.io - kind: Gateway - name: traefik-gateway - namespace: traefik - hostnames: - - sonarr.alexlebens.net - rules: - - matches: - - path: - type: PathPrefix - value: / - backendRefs: - - group: '' - kind: Service - name: sonarr - port: 80 - weight: 100 diff --git a/clusters/cl01tl/helm/sonarr/templates/service-monitor.yaml b/clusters/cl01tl/helm/sonarr/templates/service-monitor.yaml deleted file mode 100644 index 612b0af5e..000000000 --- a/clusters/cl01tl/helm/sonarr/templates/service-monitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: sonarr - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: sonarr - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: {{ .Release.Name }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: sonarr - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: metrics - interval: 3m - scrapeTimeout: 1m - path: /metrics diff --git a/clusters/cl01tl/helm/sonarr/values.yaml b/clusters/cl01tl/helm/sonarr/values.yaml index 104583afb..9ff3b1b64 100644 --- a/clusters/cl01tl/helm/sonarr/values.yaml +++ b/clusters/cl01tl/helm/sonarr/values.yaml @@ -59,6 +59,39 @@ sonarr: port: 9794 targetPort: 9794 protocol: TCP + serviceMonitor: + main: + selector: + matchLabels: + app.kubernetes.io/name: sonarr + app.kubernetes.io/instance: sonarr + serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}' + endpoints: + - port: metrics + interval: 3m + scrapeTimeout: 1m + path: /metrics + route: + main: + kind: HTTPRoute + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: traefik-gateway + namespace: traefik + hostnames: + - sonarr.alexlebens.net + rules: + - backendRefs: + - group: '' + kind: Service + name: sonarr + port: 80 + weight: 100 + matches: + - path: + type: PathPrefix + value: / persistence: config: forceRename: sonarr-config @@ -84,64 +117,50 @@ sonarr: postgres-18-cluster: mode: recovery cluster: - storage: - storageClass: local-path - walStorage: - storageClass: local-path initdb: - database: app - owner: app postInitSQL: - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; recovery: method: objectStore objectStore: - destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster - endpointURL: http://garage-main.garage:3900 index: 1 - endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage backup: objectStore: - name: garage-local - destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster index: 1 - endpointURL: http://garage-main.garage:3900 - endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage - endpointCredentialsIncludeRegion: true - retentionPolicy: "3d" + destinationBucket: postgres-backups + externalSecretCredentialPath: /garage/home-infra/postgres-backups isWALArchiver: true - # - name: external - # destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr/sonarr-postgresql-18-cluster - # index: 1 - # endpointCredentials: sonarr-postgresql-18-cluster-backup-secret - # retentionPolicy: "30d" - # isWALArchiver: false # - name: garage-remote - # destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster # index: 1 - # endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900 - # endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage - # retentionPolicy: "30d" + # destinationBucket: postgres-backups + # externalSecretCredentialPath: /garage/home-infra/postgres-backups + # retentionPolicy: "90d" # data: # compression: bzip2 - # jobs: 2 + # - name: external + # index: 1 + # endpointURL: https://nyc3.digitaloceanspaces.com + # destinationBucket: postgres-backups-ce540ddf106d186bbddca68a + # externalSecretCredentialPath: /garage/home-infra/postgres-backups + # isWALArchiver: false scheduledBackups: - name: live-backup suspend: false immediate: true schedule: "0 0 0 * * *" backupName: garage-local - # - name: daily-backup - # suspend: false - # immediate: true - # schedule: "0 0 0 * * *" - # backupName: external # - name: weekly-backup # suspend: true # immediate: true # schedule: "0 0 4 * * SAT" # backupName: garage-remote + # - name: daily-backup + # suspend: true + # immediate: true + # schedule: "0 0 0 * * *" + # backupName: external volsync-target-config: pvcTarget: sonarr-config moverSecurityContext: