The flow
- Helm renders the new manifests against your existing values.
- The
radar-hubDeployment rolls (default rolling update; one new pod up + healthy before the old terminates). Each new pod’smigrateinitContainer applies any pending schema migrations against your Postgres before the mainhubcontainer starts. - The
radar-hub-webDeployment rolls similarly.
Pinning a specific version
appVersion and we publish them together. Mismatched tags work but aren’t a tested combination.
Migration safety
All migrations land indb/migrations/NNN_*.sql and follow these rules:
- Forward-only. No down-migrations - rolling back means restoring from backup.
- Additive-by-default. New columns are nullable + defaulted; new tables don’t break existing reads.
- Idempotent.
IF NOT EXISTS,IF EXISTS,ON CONFLICT DO NOTHING. A re-run never fails. - Tracked.
schema_migrationsrecords every applied version; the runner skips applied ones.
--set migrations.allowDestructive=true value. We don’t have any of those today.
Version-skew policy
- The chart and the images ship together. Use
helm upgrade(which pins both viaappVersion) rather than rolling images independently. - The control plane speaks to in-cluster Radar via the tunnel protocol, which is forward-compatible by design - older Radar versions talk to newer control planes. We test 2 minor versions back. If you see protocol-level errors, check the Helm chart pinned in customer clusters:
radarchart ≥1.5.4is required for cloud-mode RBAC. - The web app is served by the
radar-hub-webimage and is pinned to the control plane byappVersion. You can’t run a newer web app against an older control plane - the chart prevents this.
Pre-upgrade checks
After upgrade
The first thing to check post-upgrade:radar-hub starting addr=:8080 mode=self_hosted ...- the control plane booted.license verified- the new build is signed against the same Skyhook public key as the old.- No
database schema not found/pg_query: relation "X" does not exist- themigrateinitContainer applied successfully before the main container started.
GET /api/config and confirm version.current matches the chart’s appVersion.
Rollback
- For chart-template-only changes (annotations, resources, ingress): rollback is safe.
- For binary-version rollbacks within the same migration cohort: rollback is safe.
- For binary-version rollbacks across a destructive migration: restore from backup.
Cadence
- Patch (0.x.Y): as needed, typically weekly. Bug fixes only. Minor or no migration.
- Minor (0.X.0): monthly. Feature work + migrations as needed.
- Major (X.0.0): breaking changes, e.g. cookie format change, mandatory new env var. We’ll publish a migration guide ahead of these.