To combine several changes into one rollout, pause the Deployment; nothing rolls until you resume:
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=apiOutput
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.