Automated Manifest Update (#3044)

This PR contains newly rendered Kubernetes manifests automatically generated by the CI workflow.

Reviewed-on: #3044
Co-authored-by: gitea-bot <gitea-bot@alexlebens.net>
Co-committed-by: gitea-bot <gitea-bot@alexlebens.net>
This commit was merged in pull request #3044.
This commit is contained in:
2026-01-04 05:03:06 +00:00
committed by Alex Lebens
parent 4c3386b716
commit e8b997deea
24 changed files with 125 additions and 537 deletions

View File

@@ -139,7 +139,6 @@ data:
radarr-4k IN CNAME traefik-cl01tl
radarr-anime IN CNAME traefik-cl01tl
radarr-standup IN CNAME traefik-cl01tl
rayflume IN CNAME traefik-cl01tl
searxng IN CNAME traefik-cl01tl
seerr IN CNAME traefik-cl01tl
slskd IN CNAME traefik-cl01tl
@@ -153,6 +152,7 @@ data:
vault IN CNAME traefik-cl01tl
whodb IN CNAME traefik-cl01tl
yamtrack IN CNAME traefik-cl01tl
yubal-playlist IN CNAME traefik-cl01tl
blocking:
denylists:

View File

@@ -22,7 +22,7 @@ spec:
template:
metadata:
annotations:
checksum/configMaps: f4cf29b8c5a524f1c2697c0a1b442a5e6e5e5981b2283c61004a150bed323cf8
checksum/configMaps: 3e1796341d5ee8861703a2c989cef2b8422bbc50c14205a40a104526ca8e6f84
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: blocky

View File

@@ -588,8 +588,8 @@ data:
- '[CERTIFICATE_EXPIRATION] > 240h'
group: core
interval: 30s
name: rayflume
url: https://rayflume.alexlebens.net
name: yubal-playlist
url: https://yubal-playlist.alexlebens.net
- alerts:
- type: ntfy
conditions:

View File

@@ -26,7 +26,7 @@ spec:
app.kubernetes.io/name: gatus
app.kubernetes.io/instance: gatus
annotations:
checksum/config: d5eda7303c5b9fac2156d0c2eadde359e26c2a75259c1566ab496b70d88ed002
checksum/config: cf4065a5fc4284e3ea63e011cc2566ae7b008607207c8984078e449b3d8a2d22
spec:
serviceAccountName: default
automountServiceAccountToken: false

View File

@@ -588,11 +588,11 @@ data:
url: http://lidarr.lidarr:80
key: {{HOMEPAGE_VAR_LIDARR_KEY}}
fields: ["wanted", "queued", "artists"]
- RayFlume:
icon: sh-youtubarr.webp
- Yubal Playlist:
icon: sh-yubal.webp
description: Playlist to Lidarr Import
href: https://rayflume.alexlebens.net
siteMonitor: http://rayflume.rayflume:80
href: https://yubal-playlist.alexlebens.net
siteMonitor: http://yubal-playlist.yubal-playlist:80
statusStyle: dot
- LidaTube:
icon: sh-lidatube.webp

View File

@@ -24,7 +24,7 @@ spec:
template:
metadata:
annotations:
checksum/configMaps: a889794bd37fb32d9320e69d956a25885d128590f27cdc8ee5bf76fb0b671b90
checksum/configMaps: 48476c86b5f4d884e94bd20c87296b339e4146fffee1363b3f2ea7dab53391e3
checksum/secrets: d3ba83f111cd32f92c909268c55ad8bbd4f9e299b74b35b33c1a011180d8b378
labels:
app.kubernetes.io/controller: main

View File

@@ -1,79 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: rayflume
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: rayflume
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume
helm.sh/chart: rayflume-4.5.0
namespace: rayflume
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/controller: main
app.kubernetes.io/name: rayflume
app.kubernetes.io/instance: rayflume
template:
metadata:
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: rayflume
app.kubernetes.io/name: rayflume
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
containers:
- env:
- name: DEBUG
value: "true"
- name: ALLOWED_HOSTS
value: rayflume.alexlebens.net,rayflume.rayflume
- name: SECRET_KEY
valueFrom:
secretKeyRef:
key: SECRET_KEY
name: rayflume-config-secret
- name: LIDARR_TOKEN
valueFrom:
secretKeyRef:
key: LIDARR_TOKEN
name: rayflume-config-secret
- name: YOUTUBE_API_KEY
valueFrom:
secretKeyRef:
key: YOUTUBE_API_KEY
name: rayflume-config-secret
- name: MB_USER_AGENT
valueFrom:
secretKeyRef:
key: MB_USER_AGENT
name: rayflume-config-secret
- name: CELERY_BROKER_URL
value: redis://redis-replication-rayflume-master.rayflume:6379/0
- name: CELERY_RESULT_BACKEND
value: redis://redis-replication-rayflume-master.rayflume:6379/0
image: harbor.alexlebens.net/images/rayflume:0.0.9
imagePullPolicy: IfNotPresent
name: main
resources:
requests:
cpu: 10m
memory: 64Mi
volumeMounts:
- mountPath: /data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: rayflume-data

View File

@@ -1,42 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: rayflume-config-secret
namespace: rayflume
labels:
app.kubernetes.io/name: rayflume-config-secret
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rayflume/config
metadataPolicy: None
property: SECRET_KEY
- secretKey: LIDARR_TOKEN
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rayflume/config
metadataPolicy: None
property: LIDARR_TOKEN
- secretKey: YOUTUBE_API_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rayflume/config
metadataPolicy: None
property: YOUTUBE_API_KEY
- secretKey: MB_USER_AGENT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/rayflume/config
metadataPolicy: None
property: MB_USER_AGENT

View File

@@ -1,58 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: rayflume-data-backup-secret-external
namespace: rayflume
labels:
helm.sh/chart: volsync-target-data-0.7.0
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
app.kubernetes.io/version: "0.7.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume-data-backup-secret-external
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/rayflume/rayflume-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

View File

@@ -1,58 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: rayflume-data-backup-secret-local
namespace: rayflume
labels:
helm.sh/chart: volsync-target-data-0.7.0
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
app.kubernetes.io/version: "0.7.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume-data-backup-secret-local
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/rayflume/rayflume-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

View File

@@ -1,17 +0,0 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: rayflume-data
labels:
app.kubernetes.io/instance: rayflume
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume
helm.sh/chart: rayflume-4.5.0
namespace: rayflume
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "ceph-block"

View File

@@ -1,36 +0,0 @@
apiVersion: redis.redis.opstreelabs.in/v1beta2
kind: RedisReplication
metadata:
name: redis-replication-rayflume
namespace: rayflume
labels:
helm.sh/chart: redis-replication-0.5.0
app.kubernetes.io/version: "0.5.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis-replication-rayflume
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
spec:
clusterSize: 1
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
kubernetesConfig:
image: "quay.io/opstree/redis:v8.4.0"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 10m
memory: 32Mi
storage:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ceph-block
redisExporter:
enabled: true
image: "quay.io/opstree/redis-exporter:v1.80.1"

View File

@@ -1,29 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: rayflume-data-backup-source-external
namespace: rayflume
labels:
helm.sh/chart: volsync-target-data-0.7.0
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
app.kubernetes.io/version: "0.7.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume-data-backup
spec:
sourcePVC: rayflume-data
trigger:
schedule: 16 12 * * *
restic:
pruneIntervalDays: 7
repository: rayflume-data-backup-secret-external
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi

View File

@@ -1,29 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: rayflume-data-backup-source-local
namespace: rayflume
labels:
helm.sh/chart: volsync-target-data-0.7.0
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
app.kubernetes.io/version: "0.7.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume-data-backup
spec:
sourcePVC: rayflume-data
trigger:
schedule: 16 11 * * *
restic:
pruneIntervalDays: 7
repository: rayflume-data-backup-secret-local
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi

View File

@@ -1,22 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: rayflume
labels:
app.kubernetes.io/instance: rayflume
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume
app.kubernetes.io/service: rayflume
helm.sh/chart: rayflume-4.5.0
namespace: rayflume
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: rayflume
app.kubernetes.io/name: rayflume

View File

@@ -1,22 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: redis-replication-rayflume
namespace: rayflume
labels:
helm.sh/chart: redis-replication-0.5.0
app.kubernetes.io/version: "0.5.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: redis-replication-rayflume
app.kubernetes.io/instance: rayflume
app.kubernetes.io/part-of: rayflume
spec:
selector:
matchLabels:
app: redis-replication-rayflume
redis_setup_type: replication
role: replication
endpoints:
- port: redis-exporter
interval: 30s
scrapeTimeout: 10s

View File

@@ -1,23 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: ytdl-sub
labels:
app.kubernetes.io/instance: ytdl-sub
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ytdl-sub
helm.sh/chart: ytdl-sub-4.5.0
namespace: ytdl-sub
data:
config.yaml: |
configuration:
working_directory: /cache
subscriptions.yaml: |
__preset__:
embed_thumbnail: True
square_thumbnail: True
overrides:
music_directory: /music
YouTube Releases | Max MP3 Quality:
= YouTube:
"Music Saved": "https://www.youtube.com/playlist?list=PLtiOoYqxYXtKK3fMya_xhqK0Wit0i10Gy&si=8wNBH-kGT9Nx0XBK"

View File

@@ -1,82 +0,0 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: ytdl-sub
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: ytdl-sub
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: ytdl-sub
helm.sh/chart: ytdl-sub-4.5.0
namespace: ytdl-sub
spec:
suspend: false
concurrencyPolicy: Forbid
startingDeadlineSeconds: 90
timeZone: US/Central
schedule: "12 0 * * *"
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 1
jobTemplate:
spec:
parallelism: 1
backoffLimit: 3
template:
metadata:
annotations:
checksum/configMaps: 7dc761675b15b497c6780befe4be47289bdfda96f734b0c1bafa25bba72ecf13
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: ytdl-sub
app.kubernetes.io/name: ytdl-sub
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
restartPolicy: Never
containers:
- command:
- ytdl-sub
- -c
- /config/config.yaml
- sub
env:
- name: TZ
value: America/Chicago
- name: CRON_RUN_ON_START
value: "false"
image: ghcr.io/jmbannon/ytdl-sub:2025.12.30
imagePullPolicy: IfNotPresent
name: main
resources:
requests:
cpu: 10m
memory: 128Mi
volumeMounts:
- mountPath: /cache
name: cache
- mountPath: /config/config.yaml
mountPropagation: None
name: config
readOnly: true
subPath: config.yaml
- mountPath: /config/subscriptions.yaml
mountPropagation: None
name: config
readOnly: true
subPath: subscriptions.yaml
- mountPath: /music
name: music
volumes:
- emptyDir: {}
name: cache
- configMap:
name: ytdl-sub
name: config
- name: music
persistentVolumeClaim:
claimName: ytdl-sub-nfs-storage

View File

@@ -1,17 +0,0 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ytdl-sub-nfs-storage
namespace: ytdl-sub
labels:
app.kubernetes.io/name: ytdl-sub-nfs-storage
app.kubernetes.io/instance: ytdl-sub
app.kubernetes.io/part-of: ytdl-sub
spec:
volumeName: ytdl-sub-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,63 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: yubal-playlist
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: yubal-playlist
helm.sh/chart: yubal-playlist-4.5.0
namespace: yubal-playlist
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/controller: main
app.kubernetes.io/name: yubal-playlist
app.kubernetes.io/instance: yubal-playlist
template:
metadata:
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/name: yubal-playlist
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
containers:
- env:
- name: YUBAL_TZ
value: US/Chicago
- name: YUBAL_PORT
value: "8000"
- name: YUBAL_DEBUG
value: "8000"
- name: YUBAL_MB_USER_AGENT
value: alexanderlebens@gmail.com
image: harbor.alexlebens.net/images/yubal-playlist:0.0.1
imagePullPolicy: IfNotPresent
name: main
resources:
requests:
cpu: 10m
memory: 128Mi
volumeMounts:
- mountPath: /app/ytdlp
name: cache
- mountPath: /app/data
name: music
volumes:
- emptyDir: {}
name: cache
- name: music
persistentVolumeClaim:
claimName: ytdl-sub-nfs-storage

View File

@@ -1,13 +1,13 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: rayflume
name: yubal-playlist
labels:
app.kubernetes.io/instance: rayflume
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: rayflume
helm.sh/chart: rayflume-4.5.0
namespace: rayflume
app.kubernetes.io/name: yubal-playlist
helm.sh/chart: yubal-playlist-4.5.0
namespace: yubal-playlist
spec:
parentRefs:
- group: gateway.networking.k8s.io
@@ -15,13 +15,13 @@ spec:
name: traefik-gateway
namespace: traefik
hostnames:
- "rayflume.alexlebens.net"
- "yubal-playlist.alexlebens.net"
rules:
- backendRefs:
- group: ""
kind: Service
name: rayflume
namespace: rayflume
name: yubal-playlist
namespace: yubal-playlist
port: 80
weight: 100
matches:

View File

@@ -1,12 +1,12 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: ytdl-sub-nfs-storage
namespace: ytdl-sub
name: yubal-playlist-nfs-storage
namespace: yubal-playlist
labels:
app.kubernetes.io/name: ytdl-sub-nfs-storage
app.kubernetes.io/instance: ytdl-sub
app.kubernetes.io/part-of: ytdl-sub
app.kubernetes.io/name: yubal-playlist-nfs-storage
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/part-of: yubal-playlist
spec:
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client

View File

@@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: yubal-playlist-nfs-storage
namespace: yubal-playlist
labels:
app.kubernetes.io/name: yubal-playlist-nfs-storage
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/part-of: yubal-playlist
spec:
volumeName: yubal-playlist-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: yubal-playlist
labels:
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: yubal-playlist
app.kubernetes.io/service: yubal-playlist
helm.sh/chart: yubal-playlist-4.5.0
namespace: yubal-playlist
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
protocol: TCP
name: http
selector:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: yubal-playlist
app.kubernetes.io/name: yubal-playlist