Apesar dos grandes esforços escrevendo suítes de testes os bugs sempre acontecem. O comando kubectl rollout não apenas pode implantar uma nova versão de um aplicativo, mas também pode reverter para uma revision anterior com a opção undo. Na última página(Rolling Out a New Revision), nós lançamos as revisions 1, 2 e 3. Assumindo que a revision 3 contém um bug e nós queremos reverter rapidamente para a revision 2, então executamos o comando abaixo.

# Rollback Deployment para a revision 2
$ kubectl rollout undo deployment my-deploy --to-revision=2
	deployment.apps/my-deploy rolled back

Lembrando que anteriormente...

$ kubectl rollout history deployments my-deploy            
	deployment.apps/my-deploy 
	REVISION  CHANGE-CAUSE
	1         <none>  # NGINX 1.14.2
	2         <none>  # NGINX 1.19.2
	3         <none>  # NGINX 1.20.2

Após kubectl rollout undo deployment -my-deploy --to-revision=2. A revision 3, que foi considerada bugada, ainda é mantida no histórico de revisions do Deployment, porém a revision 2, que se “tornou” a revision 4, é a atual.

$ kubectl rollout history deployments my-deploy             
	deployment.apps/my-deploy 
	REVISION  CHANGE-CAUSE
	1         <none> # NGINX 1.14.2
	3         <none> # NGINX 1.20.2
	4         <none> # NGINX 1.19.2

E se fizermos um rollout undo --to-revision=1?

$ kubectl rollout history deployments my-deploy             
	deployment.apps/my-deploy 
	REVISION  CHANGE-CAUSE
	3         <none> # NGINX 1.20.2
	4         <none> # NGINX 1.19.2
	5         <none> # NGINX 1.14.2