jellyfin: replace redis Deployment with valkey-operator instance #367
Reference in New Issue
Block a user
Delete Branch "benvin/jellyfin-valkey"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Jellyfin depended on a self-managed
redisDeployment for its distributed transcode-session store. Now that the valkey-operator is deployed cluster-wide, this hands that store to the operator so it is declaratively managed (rolling upgrades, health, future HA) instead of a hand-rolled Deployment.Changes
apps/base/jellyfin/valkey.yaml: aValkeyCluster(valkey.io/v1alpha1) namedjellyfin-valkey, single instance (shards: 1,replicas: 0), image via the artifactapi dockerhub mirror (valkey/valkey:9.0.0), metrics exporter disabled, redis-parity resources./datais anemptyDir: the transcode-lease state is ephemeral, and the operator-managed PVC cannot carry thek8up.io/backup: "false"annotation the namespace-wide k8up Schedule needs to skip an in-use RWO volume (the old redis PVC carried it).redis-deployment.yaml,redis-service.yaml,redis-pvc.yamland drop them fromkustomization.yaml; addvalkey.yaml.Jellyfin__TranscodeStore__RedisConnectionStringat the operator client Servicevalkey-jellyfin-valkey:6379, preservingabortConnect=falseandLeaseDurationSeconds.Auth / TLS
None. This operator runs Valkey cluster-mode-enabled with
protected-mode noand leaves the built-indefaultuser passwordless (norequirepass), so clients connect unauthenticated over plaintext — parity with the previous open redis. StackExchange.Redis auto-discovers the single node via the headless Service. NoVaultStaticSecret/ plain Secret is introduced.Validation
kustomize build --enable-helm apps/overlays/au-syd1/jellyfinrenders cleanly:ValkeyClusterpresent, no redis Deployment/Service/PVC, connection string updated.ValkeyClusteris skipped (CRD schema not vendored).Follow-up
HA (task 6) is intentionally out of scope: it will raise
replicas(and/orshards) and add anti-affinity/topology spread. Enabling auth (ACLdefaultuser + password viaVaultStaticSecret) and/or TLS can also be layered on later.