Upgrade
OrthID upgrades are rolling and zero-downtime by default. Read the changelog, back up, then move one minor version at a time.
A self-hosted OrthID deployment is a Helm release. Upgrading means pulling a newer chart and image, applying any database migrations, and letting Kubernetes roll the pods. This page covers how to do that safely and how to roll back if something looks wrong.
Versioning
OrthID follows semantic versioning as MAJOR.MINOR.PATCH:
- Patch releases are bug and security fixes. They are always safe to apply and never change the database schema.
- Minor releases add features and may add backward compatible migrations. Upgrade one minor at a time.
- Major releases may contain breaking changes to the API or schema. Each one ships a dedicated upgrade guide.
The chart version tracks the application version, so helm search repo orthid tells you what is available.
Read the changelog first
Every release notes its migrations, deprecations and any required config changes. Read the entries between your current version and the target version before you touch the cluster - never skip across a major boundary without reading its guide.
# What version am I on? helm list -n orthid # What is available? helm repo update helm search repo orthid/orthid --versions
Zero-downtime rolling upgrade
The chart uses a rolling update strategy with readiness probes, so old pods keep serving until new pods are healthy. Pin the target version explicitly rather than upgrading to latest:
helm upgrade orthid orthid/orthid \ --namespace orthid \ --version 2.7.0 \ --reuse-values \ --atomic \ --timeout 10m # Watch the rollout kubectl rollout status deploy/orthid-api -n orthid
--atomic rolls the release back automatically if any pod fails to become ready inside the timeout, so a bad image never takes down the running version. Because tokens are signed by keys that survive the upgrade, in-flight sessions stay valid throughout the roll.
Database migrations
Migrations are versioned and run forward only. The chart can apply them automatically as a pre-upgrade hook, or you can run them as a separate, explicit step - which is recommended in production so the schema change and the rollout are distinct, auditable actions.
# Apply pending migrations as a one-off job, then upgrade the app kubectl exec -n orthid deploy/orthid-api -- orthid migrate up # Check migration status at any time kubectl exec -n orthid deploy/orthid-api -- orthid migrate status
Rollback
If a release misbehaves, roll the Helm release back to the previous revision. This reverts the application and config; it does not revert the database.
# List revisions helm history orthid -n orthid # Roll back to the previous revision helm rollback orthid -n orthid
For a patch or minor upgrade, the migration is backward compatible, so rolling back the app alone is enough. If you must undo a migration - typically only across a major upgrade - restore the database from the backup you took beforehand rather than trying to reverse the schema by hand.
Recommended order
- Read the changelog between your version and the target.
- Take a verified backup.
- Apply migrations as an explicit step.
- Run
helm upgrade --atomicand watch the rollout. - Smoke-test sign-in, token verification and the API.
Next steps
- Backup & restore - take and test the backup this page depends on.
- Deploy - the Helm release you are upgrading.