Pausing and Resuming a Rollout

To combine several changes into one rollout, pause the Deployment; nothing rolls until you resume:

Two changes, one rolloutShell
kubectl rollout pause deployment/api >/dev/null
kubectl set image deployment/api api=localhost:33500/booknest-api:1.4 >/dev/null
kubectl set resources deployment/api -c api --requests=cpu=100m,memory=64Mi >/dev/null
kubectl get replicasets -l tier=api --no-headers | wc -l
kubectl rollout resume deployment/api && kubectl rollout status deployment/api >/dev/null
kubectl get replicasets -l tier=api
Output
2
deployment.apps/api resumed
NAME             DESIRED   CURRENT   READY   AGE
api-58cb445bff   0         0         0       87s
api-6d799c4498   3         3         3       26s
api-7bf856ff84   0         0         0       76s

While paused there were still two ReplicaSets; on resume one new ReplicaSet carried both changes. Pausing midway leaves old and new Pods side by side, a crude canary; Argo Rollouts 126 (github.com/argoproj/argo-rollouts (https://github.com/argoproj/argo-rollouts 3,589 )) adds real canary and blue-green releases.