Bird
Raised Fist0
GCPcloud~10 mins

URL maps for routing in GCP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a URL map that directs traffic to a backend service.

GCP
gcloud compute url-maps create my-url-map --default-service [1]
Drag options to blanks, or click blank then click option'
Amy-backend-service
Bmy-firewall-rule
Cmy-instance-group
Dmy-network
Attempts:
3 left
💡 Hint
Common Mistakes
Using an instance group instead of a backend service.
Confusing firewall rules or networks as routing targets.
2fill in blank
medium

Complete the code to add a path matcher to the URL map for routing based on URL paths.

GCP
gcloud compute url-maps add-path-matcher my-url-map --default-service my-backend-service --path-matcher-name [1] --path-rules "/images/*=image-backend,/videos/*=video-backend"
Drag options to blanks, or click blank then click option'
Adefault-matcher
Bbackend-service
Cpath-matcher-1
Durl-map
Attempts:
3 left
💡 Hint
Common Mistakes
Using reserved or generic names that do not identify the path matcher.
Confusing the path matcher name with backend service names.
3fill in blank
hard

Fix the error in the command to create a URL map with a host rule.

GCP
gcloud compute url-maps create my-url-map --default-service my-backend-service --host-rules [1]
Drag options to blanks, or click blank then click option'
A"hosts=example.com,pathMatcher=path-matcher-1"
Bhosts=example.com,pathMatcher=path-matcher-1
C"host=example.com,pathMatcher=path-matcher-1"
Dhost=example.com,pathMatcher=path-matcher-1
Attempts:
3 left
💡 Hint
Common Mistakes
Not quoting the host rule string.
Using 'host' instead of 'hosts' in the key.
4fill in blank
hard

Fill both blanks to define a URL map with a host rule and a path matcher.

GCP
gcloud compute url-maps create my-url-map --default-service [1] --host-rules "hosts=[2],pathMatcher=path-matcher-1"
Drag options to blanks, or click blank then click option'
Adefault-backend
Bexample.com
Cmy-backend-service
Dtest.com
Attempts:
3 left
💡 Hint
Common Mistakes
Using a domain name as the default service.
Using an incorrect or unrelated hostname in the host rule.
5fill in blank
hard

Fill all three blanks to add a path matcher with path rules to an existing URL map.

GCP
gcloud compute url-maps add-path-matcher my-url-map --path-matcher-name [1] --default-service [2] --path-rules "/api/*=[3]"
Drag options to blanks, or click blank then click option'
Aapi-matcher
Bapi-backend
Cbackend-api
Ddefault-backend
Attempts:
3 left
💡 Hint
Common Mistakes
Using inconsistent backend service names between default and path rules.
Choosing generic or unrelated names for the path matcher.

Practice

(1/5)
1. What is the main purpose of a URL map in Google Cloud Platform's load balancing?
easy
A. To store user data for web applications
B. To create virtual machines automatically
C. To route incoming web traffic to different backend services based on URL paths or hosts
D. To monitor network traffic usage

Solution

  1. Step 1: Understand URL map role

    A URL map directs web traffic to backend services depending on URL patterns.
  2. Step 2: Identify correct function

    Routing based on URL paths or hosts matches the description of URL maps.
  3. Final Answer:

    To route incoming web traffic to different backend services based on URL paths or hosts -> Option C
  4. Quick Check:

    URL maps route traffic = B [OK]
Hint: URL maps decide backend by URL pattern [OK]
Common Mistakes:
  • Confusing URL maps with storage or VM services
  • Thinking URL maps monitor traffic instead of routing
  • Assuming URL maps create resources automatically
2. Which of the following is the correct syntax to define a path matcher in a GCP URL map configuration?
easy
A. "pathMatcher": {"name": "pm1", "defaultService": "backend1"}
B. "pathMatchers": [{"name": "pm1", "defaultService": "backend1"}]
C. "pathMatchers": {"name": "pm1", "defaultService": "backend1"}
D. "pathMatcher": [{"name": "pm1", "defaultService": "backend1"}]

Solution

  1. Step 1: Identify correct key for multiple path matchers

    The key for multiple path matchers is plural: "pathMatchers" with an array value.
  2. Step 2: Confirm value type

    The value must be an array of objects, so square brackets [] are needed.
  3. Final Answer:

    "pathMatchers": [{"name": "pm1", "defaultService": "backend1"}] -> Option B
  4. Quick Check:

    Multiple path matchers use "pathMatchers" array = A [OK]
Hint: Use plural "pathMatchers" with array brackets [OK]
Common Mistakes:
  • Using singular "pathMatcher" for multiple entries
  • Using object instead of array for pathMatchers
  • Mixing singular/plural keys incorrectly
3. Given this URL map snippet, which backend service will handle the request to https://example.com/images/logo.png?
{
  "defaultService": "backend-default",
  "pathMatchers": [
    {
      "name": "pm-images",
      "defaultService": "backend-images",
      "pathRules": [
        {"paths": ["/images/*"], "service": "backend-images"}
      ]
    }
  ]
}
medium
A. backend-images
B. No backend matches, request fails
C. backend-logo
D. backend-default

Solution

  1. Step 1: Check path rules for "/images/*"

    The path matcher "pm-images" has a path rule matching "/images/*" directing to "backend-images".
  2. Step 2: Match request URL path

    The request path "/images/logo.png" matches the "/images/*" pattern, so it routes to "backend-images".
  3. Final Answer:

    backend-images -> Option A
  4. Quick Check:

    Path "/images/*" matches request = backend-images [OK]
Hint: Match URL path to pathRules first, else defaultService [OK]
Common Mistakes:
  • Choosing defaultService without checking pathRules
  • Assuming no match causes failure instead of default routing
  • Confusing path patterns with exact matches
4. You have this URL map configuration snippet:
{
  "defaultService": "backend-default",
  "pathMatchers": [
    {
      "name": "pm1",
      "defaultService": "backend1",
      "pathRules": [
        {"paths": ["/app/*"], "service": "backend-app"}
      ]
    }
  ]
}
Why does a request to https://example.com/app go to backend-default instead of backend-app?
medium
A. The defaultService overrides all pathRules
B. The path matcher name "pm1" is invalid
C. The backend service "backend-app" is not defined
D. The path "/app" does not match the pattern "/app/*" which requires a trailing slash

Solution

  1. Step 1: Understand path pattern matching

    The pattern "/app/*" matches paths starting with "/app/" but not "/app" exactly.
  2. Step 2: Check request path against pattern

    The request path "/app" lacks the trailing slash, so it does not match "/app/*" and falls back to defaultService.
  3. Final Answer:

    The path "/app" does not match the pattern "/app/*" which requires a trailing slash -> Option D
  4. Quick Check:

    Trailing slash matters in path patterns = C [OK]
Hint: Path patterns with * need trailing slash to match [OK]
Common Mistakes:
  • Assuming "/app" matches "/app/*" without slash
  • Thinking defaultService always overrides pathRules
  • Believing backend service must be explicitly defined to route
5. You want to route requests to https://example.com/api/v1/users to backend-v1 and requests to https://example.com/api/v2/users to backend-v2. Which URL map configuration correctly achieves this?
hard
A. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] }
B. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v1", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] }
C. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v2", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"} ] } ] }
D. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/*"], "service": "backend-v1"}, {"paths": ["/api/*"], "service": "backend-v2"} ] } ] }

Solution

  1. Step 1: Check path rules for specific version routing

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } defines two distinct path rules: "/api/v1/*" to "backend-v1" and "/api/v2/*" to "backend-v2" which matches requirements.
  2. Step 2: Verify defaultService and pathRules consistency

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } uses "backend-default" as defaultService, so unmatched paths go there, which is correct.
  3. Step 3: Identify issues in other options

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v1", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } sets defaultService to "backend-v1" which may misroute unmatched paths. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v2", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"} ] } ] } misses "/api/v2/*" pathRule. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/*"], "service": "backend-v1"}, {"paths": ["/api/*"], "service": "backend-v2"} ] } ] } duplicates "/api/*" paths causing conflict.
  4. Final Answer:

    Option A correctly routes /api/v1/* and /api/v2/* to respective backends -> Option A
  5. Quick Check:

    Distinct pathRules for versions = A [OK]
Hint: Use distinct pathRules for each version prefix [OK]
Common Mistakes:
  • Setting defaultService to one version backend
  • Missing pathRule for one version
  • Duplicating same path pattern causing conflicts
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard