📖 Scenario: You are managing a Kubernetes cluster that hosts multiple web applications. You want to route traffic to different services based on the hostname in the URL. This is called host-based routing.For example, requests to app1.example.com should go to the app1-service, and requests to app2.example.com should go to the app2-service.
🎯 Goal: Create a Kubernetes Ingress resource that routes traffic to two different services based on the hostname in the request.
📋 What You'll Learn
Create a basic Ingress resource with host-based rules
Route app1.example.com to app1-service
Route app2.example.com to app2-service
Use path / for both hosts
Use networking.k8s.io/v1 API version
💡 Why This Matters
🌍 Real World
Host-based routing is used in real Kubernetes clusters to serve multiple websites or apps from the same IP address, saving resources and simplifying DNS management.
💼 Career
Understanding Ingress and host-based routing is essential for Kubernetes administrators and DevOps engineers managing multi-tenant or multi-application environments.
Progress0 / 4 steps
1
Create the basic Ingress skeleton
Create a Kubernetes Ingress resource named host-routing-ingress with API version networking.k8s.io/v1 and kind Ingress. Include metadata with the name and an empty spec section.
Kubernetes
Hint
Start with the basic structure of an Ingress resource. Use apiVersion, kind, metadata with name, and an empty spec.
2
Add host-based routing rules
Inside the spec section, add a rules list with two entries. Each entry should have a host field and an empty http section. Use hosts app1.example.com and app2.example.com.
Kubernetes
Hint
Under spec, add rules as a list. Each rule has a host and an http key. Leave http empty for now.
3
Define paths and backend services
For each host in the rules, add an http.paths list with one path. Use path: / and pathType: Prefix. Set the backend.service.name to app1-service for app1.example.com and app2-service for app2.example.com. Use backend.service.port.number: 80.
Kubernetes
Hint
Each http section needs a paths list with one path. The path is / with pathType: Prefix. The backend points to the correct service name and port 80.
4
Display the complete Ingress YAML
Print the complete Ingress YAML manifest to verify the host-based routing configuration.
Kubernetes
Hint
Use a print statement to output the full YAML manifest as a string exactly as defined.
Practice
(1/5)
1. What is the main purpose of host-based routing in Kubernetes Ingress?
easy
A. To encrypt all incoming traffic automatically.
B. To balance traffic evenly across all nodes in the cluster.
C. To monitor the health of backend services.
D. To send traffic to different services based on the website address (host).
Solution
Step 1: Understand host-based routing concept
Host-based routing directs requests to services depending on the host name in the URL.
Step 2: Compare options to the concept
Only To send traffic to different services based on the website address (host). matches this behavior; others describe different features.
Final Answer:
To send traffic to different services based on the website address (host). -> Option D
Quick Check:
Host-based routing = directing traffic by host [OK]
Hint: Host-based routing uses website address to choose service [OK]
Common Mistakes:
Confusing host-based routing with load balancing
Thinking it encrypts traffic automatically
Assuming it monitors service health
2. Which of the following is the correct way to specify host-based routing in a Kubernetes Ingress YAML?
A. The keys 'serviceName' and 'servicePort' are deprecated; use 'service.name' and 'service.port.number'.
B. The host field is missing under metadata.
C. The path should be '/' instead of '/shop'.
D. The Ingress resource must have a selector field.
Solution
Step 1: Check Ingress backend service syntax
Modern Kubernetes Ingress requires 'service.name' and 'service.port.number' keys, not 'serviceName' and 'servicePort'.
Step 2: Identify the error in YAML
The YAML uses deprecated keys causing routing failure.
Final Answer:
The keys 'serviceName' and 'servicePort' are deprecated; use 'service.name' and 'service.port.number'. -> Option A
Quick Check:
Use correct backend service keys = The keys 'serviceName' and 'servicePort' are deprecated; use 'service.name' and 'service.port.number'. [OK]
Hint: Use 'service.name' and 'service.port.number' in Ingress backend [OK]
Common Mistakes:
Using old 'serviceName' and 'servicePort' keys
Adding host under metadata instead of rules
Changing path unnecessarily
5. You want to run two websites, 'blog.example.com' and 'shop.example.com', on the same Kubernetes cluster using one Ingress. How should you configure the Ingress rules for host-based routing?
hard
A. Create one rule with host 'example.com' and use paths '/blog' and '/shop' to route to services.
B. Create separate Ingress resources for each host with identical paths.
C. Create two rules under spec.rules, each with a different host and paths pointing to their respective services.
D. Use a single rule with no host specified and rely on path prefixes only.
Solution
Step 1: Understand host-based routing for multiple hosts
To route traffic by host, define separate rules for each host under spec.rules.
Step 2: Compare options for best practice
Create two rules under spec.rules, each with a different host and paths pointing to their respective services. correctly uses two rules with different hosts and paths to route traffic properly.
Final Answer:
Create two rules under spec.rules, each with a different host and paths pointing to their respective services. -> Option C
Quick Check:
Multiple hosts need separate rules = Create two rules under spec.rules, each with a different host and paths pointing to their respective services. [OK]
Hint: Use separate rules for each host in one Ingress resource [OK]
Common Mistakes:
Using one host with path prefixes instead of separate hosts
Creating multiple Ingresses unnecessarily
Not specifying hosts and relying on paths only
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.