You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(helm): bundle Redis in secret-manager modes unless the URL is supplied
Suppressing Redis whenever a secret mode was active left those deployments
with no Redis at all — REDIS_URL is optional there and both shipped examples
omit it. The chart now steps aside only on a detectable signal: an explicit
app.env.REDIS_URL, an ESO remoteRefs.app.REDIS_URL mapping, or the new
redis.provideUrl=false opt-out for a pre-created Secret it cannot read.
`app.env.REDIS_URL` takes over whenever `redis.enabled` is false. Setting it there is enough — the chart writes every `app.env` key into one Secret that **both** the app and realtime Deployments consume via `envFrom`. Supply it through your secret store rather than plain values; it contains a password, and `externalSecrets.remoteRefs.app.REDIS_URL` is supported.
61
+
`app.env.REDIS_URL` takes over whenever it is set, and the chart skips the bundled instance so you do not get a stray pod.
62
+
63
+
If the URL lives in a secret store rather than in values:
64
+
65
+
- **External Secrets** — map `externalSecrets.remoteRefs.app.REDIS_URL`. The chart detects the mapping and steps aside automatically.
66
+
- **Pre-created Secret** (`app.secrets.existingSecret`) — set `redis.provideUrl: false`. The chart cannot read your Secret, so without this it would inject a computed `REDIS_URL` that takes precedence over `envFrom` and shadows your value.
62
67
63
68
The bundled Redis is deliberately non-persistent (`--save ""`, `--appendonly no`) with a 512 MB cap: Sim stores coordination state and short-lived keys in it, so a restart costs in-flight live updates rather than committed data.
Copy file name to clipboardExpand all lines: helm/sim/README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -473,17 +473,17 @@ Two changes alter behavior on an existing release. Neither requires action, but
473
473
474
474
* **Free-tier plan limits are no longer preset.** `app.envDefaults` previously shipped `RATE_LIMIT_FREE_SYNC`, `RATE_LIMIT_FREE_ASYNC`, `EXECUTION_TIMEOUT_FREE`, `EXECUTION_TIMEOUT_ASYNC_FREE`, `FREE_TABLES_LIMIT: 3`, and `FREE_TABLE_ROWS_LIMIT: 1000`. With billing disabled the application treats these as **opt-in** — unset means unlimited — so presetting them imposed hosted-plan caps on self-hosted deployments and diverged from Docker Compose, which presets nothing. They are now commented out. **On upgrade, these limits stop being enforced.** To keep them, set the keys explicitly under `app.env`. An explicitly set value has always taken precedence and is unaffected.
475
475
476
-
* **Redis is now bundled** (`redis.enabled: true`), matching the Docker Compose stack. Redis backs pub/sub and the Socket.IO adapter, and multi-replica deployments silently drop cross-pod events without it. The chart only manages Redis when it can be sure you are not supplying it yourself, so no upgrade reroutes an existing instance:
476
+
* **Redis is now bundled** (`redis.enabled: true`), matching the Docker Compose stack. Redis backs pub/sub and the Socket.IO adapter, and multi-replica deployments silently drop cross-pod events without it. The chart steps aside whenever it can tell you are supplying `REDIS_URL` yourself, so no upgrade reroutes an existing instance:
477
477
478
478
| Your configuration | Bundled Redis | `REDIS_URL` |
479
479
|---|---|---|
480
480
| Default install | Deployed | Points at the bundled instance |
481
481
| `app.env.REDIS_URL` set | Not deployed | Your value |
482
-
| `app.secrets.existingSecret.enabled` | Not deployed | Whatever your Secret contains — the chart injects nothing |
483
-
| `externalSecrets.enabled` | Not deployed | Whatever ESO syncs — the chart injects nothing |
482
+
| `externalSecrets.remoteRefs.app.REDIS_URL` mapped | Not deployed | Synced by ESO — detected automatically |
483
+
| `redis.provideUrl: false` | Not deployed | Whatever your pre-created Secret contains |
484
484
| `redis.enabled: false` | Not deployed | Unset unless you provide it |
485
485
486
-
The two secret-manager rows matter: those modes carry `REDIS_URL` out-of-band where the chart cannot read it, and a chart-computed `env` entry would take precedence over `envFrom` and silently shadow it. Rendering is therefore byte-identical to 1.4.0 in both modes. To use the bundled Redis while running a secret manager, set `app.env.REDIS_URL` to the in-cluster address (`redis://<release>-redis:6379`) explicitly — it is not a secret.
486
+
**If you use `app.secrets.existingSecret` and that Secret already contains `REDIS_URL`, set `redis.provideUrl: false`.** The chart cannot read a pre-created Secret, so it would otherwise inject a computed `REDIS_URL` as a container `env` entry, which takes precedence over `envFrom` and would shadow your value. External Secrets needs no such flag — mapping `remoteRefs.app.REDIS_URL` is detected on its own.
API_ENCRYPTION_KEY: ""# OPTIONAL - encrypts API keys at rest; if unset, keys are stored in plain text
109
-
REDIS_URL: ""# OPTIONAL - external Redis connection string. Takes precedence over the bundled Redis (see the `redis:` section) and suppresses it. May also come from a pre-created Secret or External Secrets; in those modes the chart injects no REDIS_URL and deploys no bundled Redis, so your value is used as-is.
109
+
REDIS_URL: ""# OPTIONAL - external Redis connection string. Takes precedence over the bundled Redis (see the `redis:` section) and suppresses it. If it instead comes from a pre-created Secret, set redis.provideUrl=false; if from External Secrets, map externalSecrets.remoteRefs.app.REDIS_URL and the chart detects it.
110
110
111
111
# Email & Communication
112
112
# Configure one provider — the mailer auto-detects in priority order:
@@ -564,6 +564,13 @@ realtime:
564
564
redis:
565
565
enabled: true
566
566
567
+
# Inject REDIS_URL pointing at the bundled instance. Set false when you run
568
+
# `app.secrets.existingSecret` and that Secret already contains REDIS_URL —
569
+
# the chart cannot read a pre-created Secret, and a computed env entry would
570
+
# take precedence over it. Not needed for External Secrets: mapping
571
+
# externalSecrets.remoteRefs.app.REDIS_URL is detected automatically.
0 commit comments