Back to portfolio
Case study · Platform migration

Zero-downtime migration to new Kubernetes clusters

Moving a whole platform onto new clusters is the kind of change that goes wrong at 2 a.m. Here is how I did it with no downtime: a blue-green cutover at the cluster level, an internal DNS switch, and scale-to-zero as a one-command rollback.

By Vitor Schiavo Updated October 2026 ~6 min read

Rebuilding clusters is only half the job. Once the new clusters exist, every workload still has to move onto them, and "move production to a different cluster" is exactly the sentence that makes people schedule a midnight maintenance window. I wanted no window and no downtime, so I treated the whole thing as a blue-green deployment, just at the level of the cluster instead of a single service.

The strategy: blue-green at the cluster level

The new clusters ran in parallel with the legacy ones. Nothing was deleted until the new side was proven. The sequence:

What actually had to move

A platform is more than its stateless pods. The migration covered the whole surface:

0downtime
DNSlayer cutover
scale-to-0warm rollback
full stackapps · functions · data

Scale to zero, do not delete

The single most valuable move in a cluster migration is keeping the old workloads at zero replicas instead of deleting them. It costs almost nothing to park an idle deployment, and it turns rollback from a rebuild into a one-line scale command plus a DNS flip. Delete only after the new side has earned your trust.

The parts people forget

The migration is not done when traffic flows. Two cleanups mattered:

What I would tell someone starting this