📖 Scenario: You are managing a web application deployed on Google Cloud Run. You want to keep track of different versions (revisions) of your service so you can control traffic and roll back if needed.
🎯 Goal: Build a simple Google Cloud Run service configuration that creates a service with multiple revisions and manages traffic splitting between them.
📋 What You'll Learn
Create a Cloud Run service configuration with a specific service name
Define two revisions with different container images
Set traffic split between the two revisions
Ensure the configuration is valid and deployable
💡 Why This Matters
🌍 Real World
Managing revisions in Cloud Run helps deploy new versions safely and control traffic during updates.
💼 Career
Cloud engineers and DevOps professionals use revision management to maintain application availability and perform smooth rollouts.
Progress0 / 4 steps
1
Create initial Cloud Run service configuration
Create a YAML configuration file named service.yaml with a service named my-cloud-run-service and specify the API version serving.knative.dev/v1 and kind Service.
GCP
Hint
Start by defining the service metadata and the first revision container image.
2
Add a second revision with a new container image
Add a second revision by defining a new template under spec with the container image gcr.io/my-project/my-app:v2 and name it revision-v2 under metadata.
GCP
Hint
Define the second revision template with its own metadata name and container image.
3
Configure traffic splitting between revisions
Add a traffic section under spec to split traffic 70% to the first revision named my-cloud-run-service-00001 and 30% to the second revision named revision-v2.
GCP
Hint
Use the traffic field to assign percentages to each revision.
4
Complete the Cloud Run service configuration
Ensure the YAML file ends with the correct indentation and includes the containers section under the second revision template with the image gcr.io/my-project/my-app:v2.
GCP
Hint
Double-check the indentation and container image under the second revision template.
Practice
(1/5)
1. What is the main purpose of revision management in Google Cloud services?
easy
A. To track and control different versions of your cloud services
B. To increase the storage capacity of your cloud database
C. To monitor network traffic between services
D. To automatically scale the number of virtual machines
Solution
Step 1: Understand revision management concept
Revision management is about keeping track of different versions of your cloud services.
Step 2: Identify the main goal
The main goal is to control versions for safe updates and rollbacks.
Final Answer:
To track and control different versions of your cloud services -> Option A
Quick Check:
Revision management = version control [OK]
Hint: Revision management means version control of services [OK]
Common Mistakes:
Confusing revision management with scaling
Thinking it manages storage or network
Mixing it with monitoring tools
2. Which gcloud command is used to list all revisions of a Cloud Run service named my-service?
easy
A. gcloud run revisions list --service=my-service
B. gcloud run services list --revisions=my-service
C. gcloud revisions describe my-service
D. gcloud run deploy revisions --service=my-service
Solution
Step 1: Identify correct command structure
The command to list revisions uses gcloud run revisions list with the service flag.
Step 2: Match service name parameter
Using --service=my-service correctly specifies the service.
Final Answer:
gcloud run revisions list --service=my-service -> Option A
Quick Check:
List revisions = gcloud run revisions list --service [OK]
Hint: List revisions with 'gcloud run revisions list --service' [OK]
Common Mistakes:
Using 'services list' instead of 'revisions list'
Mixing 'describe' with listing
Wrong command order or flags
3. Given the following commands, what will be the output of gcloud run revisions list --service=my-app after deploying twice?
gcloud run deploy my-app --image=image:v1 --no-traffic gcloud run deploy my-app --image=image:v2 --no-traffic
medium
A. One revision with image:v2
B. No revisions because traffic is zero
C. Two revisions: one with image:v1 and one with image:v2
D. Error because --no-traffic disables revisions
Solution
Step 1: Understand deployment with --no-traffic
Deploying with --no-traffic creates a new revision but does not route traffic to it.
Step 2: Analyze multiple deployments
Deploying twice with different images creates two separate revisions.
Final Answer:
Two revisions: one with image:v1 and one with image:v2 -> Option C
Quick Check:
Each deploy creates a revision even with no traffic [OK]
Hint: Each deploy creates a revision, traffic doesn't affect revision count [OK]
Common Mistakes:
Assuming no traffic means no revision
Thinking only latest revision exists
Confusing traffic routing with revision creation
4. You deployed a new revision but it is not receiving traffic. Which command fixes this by routing 100% traffic to the latest revision named my-app-00002?
medium
A. gcloud run revisions set-traffic my-app-00002 --percent=100
B. gcloud run services update-traffic my-app --to-revisions my-app-00002=100
C. gcloud run services update my-app --traffic my-app-00002=100
D. gcloud run services update-traffic my-app --to-revision my-app-00002=100
Solution
Step 1: Identify correct command to update traffic
The command to update traffic routing is gcloud run services update-traffic.
Step 2: Use correct syntax for traffic split
The syntax --to-revisions my-app-00002=100 routes 100% traffic to that revision.
Final Answer:
gcloud run services update-traffic my-app --to-revisions my-app-00002=100 -> Option B
Quick Check:
Update traffic with 'services update-traffic' and '--to-revisions' [OK]
Hint: Use 'gcloud run services update-traffic' with '--to-revisions' [OK]
Common Mistakes:
Using 'update' instead of 'update-traffic'
Wrong flag names like '--percent'
Trying to set traffic on revision directly
5. You want to roll back your Cloud Run service web-app to a previous revision web-app-00003 safely without downtime. Which sequence of commands achieves this?
hard
A. gcloud run deploy web-app --image=web-app-00003
B. gcloud run services update web-app --revision web-app-00003
C. gcloud run revisions delete web-app-00004 && gcloud run services update-traffic web-app --to-revisions web-app-00003=100
D. gcloud run services update-traffic web-app --to-revisions web-app-00003=100
Solution
Step 1: Understand rollback via traffic routing
Rolling back means routing traffic back to an existing previous revision.
Step 2: Use traffic update command
Use gcloud run services update-traffic to send 100% traffic to the old revision.
Step 3: Avoid deleting revisions or redeploying
Deleting or redeploying is unnecessary and may cause downtime.
Final Answer:
gcloud run services update-traffic web-app --to-revisions web-app-00003=100 -> Option D
Quick Check:
Rollback by routing traffic to old revision [OK]
Hint: Rollback by updating traffic to old revision, no redeploy needed [OK]
Common Mistakes:
Trying to redeploy old revision as image
Deleting newer revisions unnecessarily
Using wrong commands to update revision
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.