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.