19f7afac92
Activates the arr forks (sonarr/radarr/prowlarr) #14 Redis features — SignalR backplane, cross-replica cache-invalidation bus, and distributed rate limiter — which ship deployed but inert because no Valkey exists in arrstack and nothing is wired to it. Ben wants ONE Valkey shared by all three apps. ## Changes - Adds a single shared `ValkeyCluster` (`arrstack-valkey`) under `apps/base/arrstack/valkey/`, modeled on `jellyfin-valkey`: `shards:1`/`replicas:2` HA (one primary + two replicas, automatic failover), image via artifactapi (`artifactapi.k8s.syd1.au.unkin.net/dockerhub/valkey/valkey:9.0.0`), operator-default passwordless `default` user, node spread across hosts, cluster-aware PDB, ephemeral `/data`. - Registers the `valkey` component in the arrstack base kustomization. - Wires `<App>__Redis__Host` + `<App>__Redis__Port` into the `sonarr-env` / `radarr-env` / `prowlarr-env` ConfigMaps, all pointing at the shared service `valkey-arrstack-valkey.arrstack.svc.cluster.local:6379`. ## Notes - Setting `Host` is the activation switch: the fork's `RedisOptions.IsConfigured` gates purely on a non-empty `Host`, so there is no separate Enabled flag. - Passwordless (jellyfin parity — the operator leaves the `default` user without auth), so no `Password`/`Ssl` is wired and there is no secret to reference. - One cluster is safe for all three: each fork namespaces its keys and pub/sub channels by a per-app prefix (`sonarr:ratelimit:` / `radarr:ratelimit:` / `prowlarr:ratelimit:`), so their state never collides. - App `image:` (-unkin5), the waitfordb initContainer, and S3 buckets are untouched. - Validated: `kubectl kustomize` renders clean for both `apps/base/arrstack` and `apps/overlays/au-syd1/arrstack`. Follow-up: after merge, Valkey must come up and the three apps must roll (pick up the new env) before the #14 features can be validated live. --------- Co-authored-by: Ben Vincent <ben@unkin.net> Reviewed-on: #394 Co-authored-by: Unkin Agent <unkin-agent@unkin.net> Co-committed-by: Unkin Agent <unkin-agent@unkin.net>
34 lines
1.6 KiB
YAML
34 lines
1.6 KiB
YAML
---
|
|
# Non-secret env for the -unkin2 fork. The fork reads Servarr config from
|
|
# Sonarr__<Section>__<Key> env (no config.xml edits, no s6/PUID). Postgres wiring
|
|
# points every replica at the same shared DB (arrstack-postgres-rw / sonarr-main);
|
|
# Auth__Method=External defers UI auth to arrproxy/oauth2-proxy; Server__UrlBase
|
|
# keeps the /sonarr prefix so arrproxy path-routing works; App__InstanceName is
|
|
# identical across replicas (shared session-cookie name). User/Password/ApiKey
|
|
# come from Secrets (see deployment.yaml), not here.
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: sonarr-env
|
|
namespace: arrstack
|
|
data:
|
|
Sonarr__Postgres__Host: arrstack-postgres-rw.arrstack.svc.cluster.local
|
|
Sonarr__Postgres__Port: "5432"
|
|
Sonarr__Postgres__MainDb: sonarr-main
|
|
Sonarr__Log__DbEnabled: "false"
|
|
Sonarr__Auth__Method: External
|
|
Sonarr__Auth__Required: DisabledForLocalAddresses
|
|
Sonarr__App__InstanceName: Sonarr
|
|
Sonarr__Server__Port: "8989"
|
|
Sonarr__Server__UrlBase: /sonarr
|
|
Sonarr__Update__Mechanism: External
|
|
# Shared arrstack Valkey (valkey-operator). Setting Host is what activates the
|
|
# fork's #14 Redis features (SignalR backplane, cross-replica cache-invalidation
|
|
# bus, distributed rate limiter): RedisOptions.IsConfigured gates purely on a
|
|
# non-empty Host, so there is no separate Enabled flag. The operator leaves the
|
|
# default user passwordless (jellyfin parity), so no Password/Ssl is wired.
|
|
# Channels/keys are namespaced by this fork's sonarr:ratelimit: prefix, so the
|
|
# one cluster is safe to share with radarr/prowlarr.
|
|
Sonarr__Redis__Host: valkey-arrstack-valkey.arrstack.svc.cluster.local
|
|
Sonarr__Redis__Port: "6379"
|