Releases and rollbacks
Every change is a release
Section titled “Every change is a release”Each change to an app is recorded as a numbered revision: deploys, configuration changes, rollbacks, promotions and template deploys alike. A release snapshots the app’s spec (image, processes, environment variables, health check, domains, volumes) and the names and versions of the secrets in effect, plus who or what created it (a user id, or a token).
- Console: the Releases card on the app page.
- API:
APP="$KUBEN_URL/api/v1/projects/shop/environments/production/apps/api"curl -fsS "$APP/releases" -H "Authorization: Bearer $KUBEN_TOKEN"On the cluster, releases are Release custom resources in the environment namespace, so kubectl get releases -n shop-production lists them too.
Roll back
Section titled “Roll back”Press Roll back next to any earlier revision, or:
curl -fsS -X POST "$APP/rollback" \ -H "Authorization: Bearer $KUBEN_TOKEN" -H 'Content-Type: application/json' \ -d '{"revision": 41}'What is restored, what is kept
Section titled “What is restored, what is kept”| Restored from the revision | Kept as they are today |
|---|---|
| image | domains |
| commands and ports | volumes and their contents |
| environment variables | |
| health check |
Data never moves backwards: a rollback changes what runs, never what is stored. The rollback itself becomes a new revision, so the history stays linear and every rollback is visible in the audit log.
Safe rollouts
Section titled “Safe rollouts”Rollbacks use the same rollout machinery as deploys:
- New pods must pass their readiness check before old ones stop.
- Slow starters get up to 5 minutes through a startup probe.
- A rollout that makes no progress for 10 minutes is reported as
RolloutFailedon the app’sReadycondition; the previous pods keep serving.
Apps with a volume run a single pod and use the Recreate strategy, so they see a few seconds of downtime on every rollout, including rollbacks.
Restart without a change
Section titled “Restart without a change”Restart (POST …/restart) rolls the pods with the same revision, for example to pick up a rotated secret. It is audited but does not create a release.