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