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(docs): close the remaining placeholder-secret and egress gaps
Review found the Terraform snippet still inherited one placeholder it did not
override: values-aws.yaml sets postgresql.auth.password to
your-secure-postgres-password, and the chart accepts it. Same class as the app
secrets, same consequence — a bundled database with a publicly documented
credential.
The AWS and GCP example values also enable networkPolicy, whose default egress
reaches only the bundled pods and TCP 443. The page told operators to replace
Postgres and Redis with managed instances without saying that leaves them
unreachable until the egress rules open a path.
Pi has its own immutable image and fails closed without it; the Function image
cannot satisfy that requirement, so it gets its own row rather than being folded
into the sandbox one.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/reference-architectures.mdx
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,10 +26,15 @@ Everything the chart can run itself, it runs by default. That is convenient for
26
26
| Ingress | Off | You install the controller; the chart renders the Ingress |
27
27
| TLS certificates | Off | You provision them |
28
28
| Remote sandbox | Off | Required for Python, Shell, and imported JavaScript — a provider **and** an immutable Function image. See [Security](/platform/self-hosting/security)|
29
+
| Pi execution | Off | A separate immutable image from the Function one, pinned with `E2B_PI_TEMPLATE_ID` or `DAYTONA_PI_SNAPSHOT_ID`. Fails closed without it |
29
30
| PII redaction, Ollama, telemetry collector | Off | Optional, off unless you enable them |
30
31
31
32
The bundled Postgres uses a 10 Gi `ReadWriteOnce` volume and is intended for evaluation. Moving to managed Postgres is the single most important production change.
32
33
34
+
<Callouttype="warn">
35
+
The AWS and GCP example values set `networkPolicy.enabled: true`, and the chart's default egress allows only the bundled pods and TCP 443. Moving Postgres or Redis outside the cluster without opening a path leaves them unreachable — add the rules to `networkPolicy.egress`, or set `networkPolicy.allowExternalEgress: true`, in the same change that points the app at the managed instance.
{ name = "app.env.API_ENCRYPTION_KEY", value = var.api_encryption_key },
155
160
{ name = "app.env.INTERNAL_API_SECRET", value = var.internal_api_secret },
156
161
{ name = "app.env.CRON_SECRET", value = var.cron_secret },
162
+
# Only when the bundled Postgres is in use. With managed Postgres, set
163
+
# externalDatabase.* and postgresql.enabled=false instead.
164
+
{ name = "postgresql.auth.password", value = var.postgres_password },
157
165
]
158
166
}
159
167
```
160
168
161
169
<Callouttype="warn">
162
-
The example values files ship literal placeholders such as `your-secure-production-auth-secret-here`. The chart only rejects empty values and its own `CHANGE-ME` strings, so a deployment that inherits those placeholders installs cleanly with a publicly known session-signing secret. Override every secret, or use External Secrets and set none of them inline.
170
+
The example values files ship literal placeholders such as `your-secure-production-auth-secret-here`. That includes `postgresql.auth.password`. The chart only rejects empty values and its own `CHANGE-ME` strings, so a deployment that inherits those placeholders installs cleanly with a publicly known session-signing secret and database password. Override every secret, or use External Secrets and set none of them inline.
163
171
</Callout>
164
172
165
173
Because the chart is local, `version` does nothing — what pins it is the git ref you vendor from, and `helm/sim/Chart.yaml` tells you which chart release that ref carries. Pin that ref, and pin the image tags separately, or an unplanned `terraform apply` can move Sim to a new release with new migrations. See [Upgrades](/platform/self-hosting/upgrades).
0 commit comments