Back up PostgreSQL
Back up the Syntho PostgreSQL databases. They store users, workspaces, and platform state.
Use your managed PostgreSQL backups.
Use this when you prefer file-based backups. This works for external PostgreSQL and bundled PostgreSQL. You only need network access to the database. Official documentation pg_dump.
Method 3: Persistent Volume Claim snapshots / Velero (in-cluster PostgreSQL)
Use this only if PostgreSQL runs in-cluster.
Back up
Identify the PostgreSQL Persistent Volume Claims:
kubectl get pvc -n <namespace>Common names:
database-data-1database-data-2
Back up both Persistent Volume Claims using one of:
Kubernetes
VolumeSnapshotVelero namespace backup
Keep the two backups time-consistent.
Restore
Restore both Persistent Volume Claims (or their snapshots) to the same point in time.
Start Syntho and validate login/workspaces.
In-cluster PostgreSQL is convenient for dev/test. For production, you can use either in-cluster PostgreSQL or external PostgreSQL. External PostgreSQL can simplify backups, restores, and upgrades, but it is optional.
Switch Kubernetes (Helm) to external PostgreSQL
Optional. Use this when you want Syntho to connect to a PostgreSQL instance outside the cluster.
Use the same metadata database names listed above (syntho-core and syntho-backend).
Provision PostgreSQL and create the databases
Run this SQL as a PostgreSQL admin:
CREATE ROLE syntho WITH LOGIN PASSWORD '<strong-password>';
CREATE DATABASE "syntho-core" OWNER syntho;
CREATE DATABASE "syntho-backend" OWNER syntho;Make sure Syntho can reach your PostgreSQL host:
PostgreSQL is reachable from the cluster / node network.
Firewall / security groups allow inbound traffic (usually
5432).TLS is enabled if required by your security policy.
Update values.yaml database configuration
Update both database configuration blocks. Note that both core and backend have a dedicated database. Set the external host and align database names:
core:
db:
host: <external-postgres-hostname-or-ip>
port: 5432
name: syntho-core
username: syntho
password: <strong-password>
backend:
db:
host: <external-postgres-hostname-or-ip>
port: 5432
name: syntho-backend
user: syntho
password: <strong-password>Disable the in-cluster PostgreSQL
If you run PostgreSQL externally, do not deploy the chart’s PostgreSQL resources. In the values.yaml set
core:
database_enabled: false
backend:
database_enabled: falseDeploy and verify
Apply your updated values:
helm upgrade --install <release-name> <chart> -f values.yamlVerify pods/containers are healthy, UI is accessible, you can log in and workspaces are visible (or can be created).
Last updated
Was this helpful?

