Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Upgrading and Rolling Back Releases in Kubernetes
📖 Scenario: You are managing a simple web application deployed on Kubernetes. You need to upgrade the application to a new version and then learn how to roll back to the previous version if something goes wrong.
🎯 Goal: Learn how to upgrade a Kubernetes deployment to a new version and roll back to the previous version using kubectl commands.
📋 What You'll Learn
A Kubernetes cluster with kubectl configured
A deployment named webapp running version v1
Basic knowledge of kubectl commands
💡 Why This Matters
🌍 Real World
In real projects, upgrading applications without downtime and rolling back quickly if issues occur is critical for smooth user experience.
💼 Career
DevOps engineers and site reliability engineers often manage application deployments and need to perform upgrades and rollbacks safely.
Progress0 / 4 steps
1
Create the initial deployment
Create a deployment named webapp with image nginx:1.19 using the command kubectl create deployment webapp --image=nginx:1.19.
Kubernetes
Hint
Use kubectl create deployment with the exact name webapp and image nginx:1.19.
2
Upgrade the deployment to a new version
Use the command kubectl set image deployment/webapp webapp=nginx:1.21 to upgrade the webapp deployment's container image to nginx:1.21.
Kubernetes
Hint
Use kubectl set image with deployment name webapp and container name webapp to set the image to nginx:1.21.
3
Roll back the deployment to the previous version
Use the command kubectl rollout undo deployment/webapp to roll back the webapp deployment to the previous version.
Kubernetes
Hint
Use kubectl rollout undo with the deployment name webapp to roll back.
4
Check the rollout status
Use the command kubectl rollout status deployment/webapp to check the status of the deployment rollout.
Kubernetes
Hint
Use kubectl rollout status deployment/webapp to see if the deployment is successful.
Practice
(1/5)
1. What is the primary purpose of the helm upgrade command in Kubernetes?
easy
A. To create a new Helm release from scratch
B. To delete a Helm release from the cluster
C. To update an existing Helm release with a new version of the application
D. To list all Helm releases in the cluster
Solution
Step 1: Understand the role of helm upgrade
This command is used to update an existing release with new chart or configuration changes.
Step 2: Differentiate from other Helm commands
Unlike helm install which creates new releases, helm upgrade modifies existing ones.
Final Answer:
To update an existing Helm release with a new version of the application -> Option C
Quick Check:
Upgrade means update existing release [OK]
Hint: Upgrade means update existing release, not create or delete [OK]
Common Mistakes:
Confusing upgrade with install
Thinking upgrade deletes releases
Assuming upgrade lists releases
2. Which of the following is the correct syntax to rollback a Helm release named myapp to revision 2?
easy
A. helm upgrade myapp --revision=2
B. helm rollback myapp 2
C. helm rollback --release myapp --rev 2
D. helm revert myapp 2
Solution
Step 1: Recall Helm rollback syntax
The correct command is helm rollback RELEASE_NAME REVISION.
What will be the image tag shown in the status output after the rollback?
medium
A. No image tag shown
B. v2 (tag set during upgrade)
C. v3 (latest tag automatically applied)
D. v1 (original tag from install)
Solution
Step 1: Understand the sequence of commands
First, the app is installed with default image tag (assumed v1). Then upgraded to tag v2. Then rolled back to revision 1 (the original install).
Step 2: Determine image tag after rollback
Rollback to revision 1 restores the original state, so image tag reverts to v1.
Final Answer:
v1 (original tag from install) -> Option D
Quick Check:
Rollback restores previous revision state [OK]
Hint: Rollback returns to previous revision state, undoing upgrades [OK]
Common Mistakes:
Assuming rollback keeps upgraded tag
Thinking rollback applies latest tag automatically
Ignoring rollback effect on release state
4. You ran helm upgrade myapp ./chart --set replicas=3 but the number of pods did not change. What is the most likely cause?
medium
A. The chart does not use the replicas value to set pod count
B. You forgot to run helm rollback first
C. The helm upgrade command syntax is incorrect
D. The Kubernetes cluster is down
Solution
Step 1: Check if the chart supports the replicas value
Not all charts use the replicas parameter; if the chart template ignores it, no change occurs.
Step 2: Rule out other causes
Syntax is correct, rollback is unrelated, and cluster down would cause more errors.
Final Answer:
The chart does not use the replicas value to set pod count -> Option A
Quick Check:
Chart must support value for upgrade to affect it [OK]
Hint: Check if chart templates use your set values before expecting changes [OK]
Common Mistakes:
Assuming all charts respond to replicas value
Confusing rollback with upgrade necessity
Blaming syntax when command is correct
5. You want to upgrade your Helm release webapp to version 3 of your chart but keep the previous configuration values intact except for changing the image tag to v3. Which command achieves this safely?
hard
A. helm upgrade webapp ./chart --reuse-values --set image.tag=v3
B. helm upgrade webapp ./chart --reset-values --set image.tag=v3
C. helm upgrade webapp ./chart --set image.tag=v3
D. helm rollback webapp 3 --set image.tag=v3
Solution
Step 1: Understand --reuse-values option
This option keeps existing values from the previous release and applies new overrides.
Step 2: Compare with other options
--reset-values resets to chart defaults, losing previous config. Omitting reuse-values loses previous config. Rollback does not upgrade.
Final Answer:
helm upgrade webapp ./chart --reuse-values --set image.tag=v3 -> Option A
Quick Check:
Use --reuse-values to keep old config and override selectively [OK]
Hint: Use --reuse-values with --set to keep config and update specific values [OK]
Common Mistakes:
Using --reset-values and losing config
Not using --reuse-values and losing previous settings