Rollback

The Kubernetes cluster maintains the deployment history, so if the new deployed version is not working, we can roll back to the previous history available in the Kubernetes cluster.

kubectl rollout history deployment/deploymentdemo
deployment.apps/deploymentdemo
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

In the above history, 

Revision #3 ---> contains poddemo-3.0
Revision #2 ---> contains poddemo-2.0
Revision #1 ---> contains poddemo-1.0

This is just to show that what version of container is deployed for Revision #3

kubectl describe deployments deploymentdemo

Name:                   deploymentdemo
Annotations:            deployment.kubernetes.io/revision: 3
Replicas:               4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType:           RollingUpdate
    Image:        iam7hills/learnkubernetes:podsdemo-3.0


Rollout to the previous version

kubectl rollout undo deployment deploymentdemo --to-revision=2
deployment.apps/deploymentdemo rolled back

kubectl describe deployment deploymentdemo
Name:                   deploymentdemo
Namespace:              default
CreationTimestamp:      Sat, 23 Dec 2023 20:12:52 -0800
Labels:                 type=web
Annotations:            deployment.kubernetes.io/revision: 4
Selector:               type=web1
Replicas:               4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
Pod Template:
  Labels:  type=web1
  Containers:
   podsdemo:
    Image:        iam7hills/learnkubernetes:podsdemo-2.0

kubectl rollout history deployment/deploymentdemo
deployment.apps/deploymentdemo
REVISION  CHANGE-CAUSE
1         <none>
3         <none>
4         <none>

If you notice here, revision #2, was removed as part of the rollback and it become revision #4 now.