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
Copy file name to clipboardExpand all lines: HelmChart/Public/oneuptime/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -503,7 +503,7 @@ clickhouse:
503
503
- [ ] For production high availability, run PostgreSQL and ClickHouse under their bundled operators instead of the single, standalone built-ins. Set `postgresOperator.cnpg.enabled: true` (CloudNativePG — streaming replication and automatic failover) and `clickhouseOperator.altinity.enabled: true` (Altinity — replication, sharding, and declarative lifecycle management). See the **Operator-managed PostgreSQL** and **Operator-managed ClickHouse** sections above for the full configuration. Enabling an operator bootstraps a fresh, empty cluster — if you already run a standalone database, follow the migration runbooks ([PostgreSQL](../../Docs/MigratePostgresStandaloneToOperator.md), [ClickHouse](../../Docs/MigrateClickhouseStandaloneToOperator.md)) to move your data first.
504
504
- [ ] Enable the dedicated worker deployment so background jobs (telemetry ingestion, notifications, incident/alert processing, workflows) run in their own pods instead of competing with API requests on the shared event loop. Set `worker.enabled: true` — the `app` pods then stop consuming queues and the worker drains them. The worker becomes REQUIRED for all background work, so keep `worker.keda.minReplicas >= 1`, and set `app.keda.targetCPUUtilizationPercentage` (with `app.resources.requests.cpu`) so the API tier still autoscales once its queue-size trigger is disabled.
505
505
- [ ] Put the bundled PgBouncer connection pooler in front of PostgreSQL if you autoscale workers (KEDA) or use a connection-limited managed/external PostgreSQL — it keeps a connection storm (for example, many worker pods booting at once) from exhausting the database. Set `pgbouncer.enabled: true`. It runs in `transaction` pool mode by default (the largest connection reduction, since idle client connections hold no backend connection), which is safe because migrations run in a dedicated Job (`migrate.enabled`, on by default) instead of on the pooled pods. Keep `pgbouncer.defaultPoolSize` and `pgbouncer.maxDbConnections` below your PostgreSQL `max_connections`. For an external/managed PostgreSQL, point `externalPostgres.host`/`.port` at the database and enable the pooler — or point them at your provider's own pooled endpoint (RDS Proxy, Neon `-pooler`, Supabase Supavisor) instead. See the **Connection pooling with PgBouncer** section in [Postgres.md](../../Docs/Postgres.md).
506
-
- [ ] Confirm the database migration Job is healthy. With `migrate.enabled: true` (the default), schema and data migrations run once per release in a dedicated pre-upgrade / post-install Job rather than on every pod — so deploys gate on it. On a fresh install, an init container waits for the database before migrating; a slow first-time CloudNativePG bootstrap may need a longer `helm upgrade --install --timeout` (for example `--timeout 15m`). Check the Job with `kubectl get jobs -l app.kubernetes.io/component=migrate` and its logs if a deploy stalls.
506
+
- [ ] Confirm the database migration Job is healthy. With `migrate.enabled: true` (the default), schema and data migrations run once per release in a dedicated Job rather than on every pod. By default it runs it **asynchronously** (`migrate.hook: false`) so deploys never block — which means pods may start before migrations finish, so keep your migrations backward-compatible, or set `migrate.hook: true` to make the deploy wait. Note: with the async default, a brand-new install leaves the app pods unready (CrashLoopBackOff) until the Job creates the schema; for a clean first install run it once with `--set migrate.hook=true` (and a longer `helm upgrade --install --timeout`, e.g. `--timeout 15m`, for a slow first-time CloudNativePG bootstrap), then drop back to the async default. Check the Job with `kubectl get jobs -l app.kubernetes.io/component=migrate` and its logs if a deploy looks wrong.
507
507
- [ ] Please make sure you have static passwords for your database passwords (for Redis, ClickHouse and PostgreSQL).
508
508
- [ ] Please set `oneuptimeSecret` and `encryptionSecret` (or setup in `externalSecrets` section) to a long random string. You can use a password generator to generate these strings.
509
509
- [ ] Please set `probes.<key>.key` to a long random string. This is used to secure your probes.
0 commit comments