Redis upgrade and rollback

A repository document, rendered for the site. View source markdown.

New to cub? Install the cub CLI first. You can pull and render public catalog packages without an account. Commands that save or change ConfigHub data require you to sign in.

Generated at: 2026-07-30T12:38:02.000Z UTC · source: committed helm-expt evidence for this rendered repository document.

This live test starts from the public Redis 25.5.3 installer package. It records a change from three replicas to two, prepares Redis 27.0.0, and checks that the upgrade does not put the replica count back to the chart default. ConfigHub then promotes the candidate through development and staging. The reviewed staging configuration is packaged once and reconciled by Argo CD on two throwaway clusters.

The test then restores the exact staging Unit revisions recorded before the promotion. It publishes that restored configuration as a separate OCI artifact and checks both clusters again. This is a rollback of desired Kubernetes configuration. It does not claim to reverse database data or an irreversible migration.

Result

pass. A Redis chart upgrade from 25.5.3 to 27.0.0 kept a recorded post-render replica change, exposed two affected environment variants, promoted the candidate through development and staging, and reconciled the same reviewed OCI digest on two Argo CD clusters. The test then restored the exact pre-upgrade staging revisions, published a separate rollback OCI, and reconciled both clusters back to chart 25.5.3 with two replicas. Both forward and rollback states passed exact-object, workload-convergence, and PONG checks.

StepResultWhat was checked
Resolve the public packagespass25.5.3 is sha256:7ad5fa6de0aa9c29df8cd26650893ebae6ad149a7c5ac33a8beedf5b02e2ac33; 27.0.0 is sha256:f7abbebaa196753028c1ece5c24a32a0f40ac08aeda7ad3a5ec225e019a90780.
Import the current packagepass14 Kubernetes objects, Redis 8.6.3, chart 25.5.3.
Record the user changepassStatefulSet/redis-replicas spec.replicas changed from 3 to 2.
Check the candidate planpass0 add, 13 change, 0 delete; no replica reset proposed.
Reconcile the basepassChart 25.5.3 became 27.0.0; Redis 8.6.3 became 8.8.0; replicas stayed 2.
Show downstream impactpass2 environment Spaces are in the path: development was pending first, and staging became pending after the development wave.
Promote developmentpassChart 27.0.0; replicas 2; dry run left stored data unchanged.
Promote stagingpassChart 27.0.0; replicas 2; dry run left stored data unchanged.
Publish the ConfigHub releasepasssha256:347293667741cf5235b716438cd7f39a16a3b7ab005721210c8d7a7ca66ec7c5.
Build and pull the portable OCIpass14 objects at sha256:40be80f19dacbc9d2e2f32d2b77967ef60a872c0c4b3b3f6fd54b5f6fa2ffe0f; pulled files matched the reviewed staging files.
Roll out to two clusterspassBoth Argo CD applications reported the same OCI digest and both Redis installations became ready.
Restore the prior revisionspass14 changed Units were restored under ChangeSet rollback-to-25-5-3; 1 unchanged Unit was left alone.
Publish the rollback OCIpass14 objects at sha256:0fdd44e42cf01fdb8b8a7200871a8f6647f65298aacb1f4d880c54e9d99f34c6; pulled files matched the restored staging Units.
Reconcile the rollbackpassBoth Argo CD applications reported the rollback digest and both Redis installations became ready on chart 25.5.3.

Candidate results

ClusterChartArgo syncArgo healthMasterReplicasRedis checkExact objectsCurrent workloads
hx-redis-upgrade-20260727-w12-a27.0.0SyncedHealthy1/12/2PONGobjectsworkloads
hx-redis-upgrade-20260727-w12-b27.0.0SyncedHealthy1/12/2PONGobjectsworkloads

Rollback results

ClusterChartArgo syncArgo healthMasterReplicasRedis checkExact objectsCurrent workloads
hx-redis-upgrade-20260727-w12-a25.5.3SyncedHealthy1/12/2PONGobjectsworkloads
hx-redis-upgrade-20260727-w12-b25.5.3SyncedHealthy1/12/2PONGobjectsworkloads

The Secret is separate

The selected reuse-existing-secret configuration refers to redis/redis-existing-secret, key redis-password. The package and portable workload OCI do not contain that password. This test created a different temporary Secret on each target through standard input. No credential bytes were written to the repository or receipt.

One current CLI gap

cub variant promote --dry-run -o mutations returned no text for both promotions. The command changed no stored data, and the real promotions completed, but the empty preview is not useful to a person reviewing the upgrade. This receipt records that as a known presentation gap rather than describing the preview as complete.

What this proves

Limits

Receipt: runs/redis-upgrade-app-proof/receipt.yaml.