helm upgrade removes the orphaned Bitnami postgresql StatefulSet left behind by earlier releases. No data risk. To reclaim storage, manually delete the orphaned PVC after upgrade:
kubectl delete pvc data-<release>-postgresql-0 -n <namespace>Chart version 2.9.0 replaces the Bitnami PostgreSQL subchart with the official postgres:17-alpine image. This is a breaking change for existing installations.
- The Bitnami
postgresqlandcommonchart dependencies have been removed - PostgreSQL is now deployed as a simple Deployment + Service using the official Docker image
- The service name changed from
{release}-postgresqlto{release}-helix-controlplane-postgres - The PVC name changed from
data-{release}-postgresql-0to{release}-helix-controlplane-postgres-pvc - Several
values.yamlfields were removed (see below)
The following fields no longer have any effect and can be removed from your values overrides:
| Removed field | Notes |
|---|---|
postgresql.image.registry |
Use global.imageRegistry for private registries |
postgresql.auth.postgresPassword |
No separate superuser password — auth.password is used |
postgresql.auth.postgresPasswordKey |
Removed with postgresPassword |
postgresql.architecture |
Always standalone (single replica) |
| New field | Default | Notes |
|---|---|---|
postgresql.persistence.enabled |
true |
Previously managed internally by Bitnami |
postgresql.persistence.size |
8Gi |
|
postgresql.persistence.storageClass |
"" |
|
postgresql.persistence.accessModes |
[ReadWriteOnce] |
|
postgresql.persistence.existingClaim |
"" |
Use to attach a pre-existing PVC |
If you can afford to lose your database and start fresh:
# 1. Delete the old Bitnami PostgreSQL PVC
kubectl delete pvc data-{release}-postgresql-0 -n {namespace}
# 2. Upgrade the chart
helm upgrade {release} helix/helix-controlplane \
-n {namespace} \
-f your-values.yaml
# 3. The controlplane will create a fresh database on startupIf you need to keep your data, use the migration script included with the chart.
Prerequisites:
kubectlconfigured with access to your cluster- The old chart version still running (do not upgrade first)
Steps:
# 1. Download the migration script
curl -O https://raw.githubusercontent.com/helixml/helix/main/charts/helix-controlplane/scripts/migrate-from-bitnami.sh
chmod +x migrate-from-bitnami.sh
# 2. Run the script — it will:
# - Dump your database from the old Bitnami pod
# - Pause and prompt you to run helm upgrade
# - Restore the dump into the new postgres pod
# - Verify the migration
./migrate-from-bitnami.sh --release {release} --namespace {namespace}The script is interactive — it will pause after the dump and tell you when to run helm upgrade. Follow the on-screen instructions.
After successful migration:
# Delete the old Bitnami PVC (the data is now in the new PVC)
kubectl delete pvc data-{release}-postgresql-0 -n {namespace}The local dump file is preserved at /tmp/helix-pg-migration-{release}.sql as a backup.
If your values file referenced Bitnami-specific fields, update it:
Before (2.8.x):
postgresql:
enabled: true
image:
registry: docker.io
repository: bitnamilegacy/postgresql
tag: "17"
auth:
postgresPassword: "admin-password"
username: helix
password: "my-password"
database: helix
architecture: standaloneAfter (2.9.0):
postgresql:
enabled: true
image:
repository: postgres
tag: "17-alpine"
auth:
username: helix
password: "my-password"
database: helix
persistence:
enabled: true
size: 8GiIf you were using postgresql.image.registry to pull from a private registry, use global.imageRegistry instead:
Before:
postgresql:
image:
registry: my-registry.example.com
repository: bitnamilegacy/postgresqlAfter:
global:
imageRegistry: my-registry.example.com
postgresql:
image:
repository: postgres
tag: "17-alpine"If you use an external PostgreSQL instance (postgresql.enabled: false), no action is required. The postgresql.external.* configuration is unchanged.