What if one simple tool could handle all your app traffic without endless manual rules?
Why Ingress controllers (Nginx, Traefik) in Kubernetes? - Purpose & Use Cases
Imagine you have many websites and apps running on different servers. You want users to reach them all through one door, but you have to tell each server separately how to handle the traffic.
You write many rules manually for each server and update them every time something changes.
This manual way is slow and confusing. If you forget to update a rule, users get errors or can't reach your apps.
It's hard to keep track of all the rules, and mistakes cause downtime or security risks.
Ingress controllers like Nginx and Traefik act as smart traffic managers. They listen at one entry point and automatically send users to the right app based on simple rules.
They update themselves when you add or change apps, so you don't have to do it manually.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1:80 iptables -t nat -A PREROUTING -p tcp --dport 81 -j DNAT --to-destination 10.0.0.2:80
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: app1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 80
- host: app2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app2-service
port:
number: 80With ingress controllers, you can easily manage many apps behind one address, making your system simpler and more reliable.
A company runs multiple web apps for customers. Using Traefik, they route all traffic through one gateway, so customers access apps by friendly URLs without complex network setup.
Manual traffic routing is slow and error-prone.
Ingress controllers automate and simplify routing rules.
This leads to easier management and better user experience.
Practice
Solution
Step 1: Understand Ingress controller purpose
Ingress controllers manage how external users access services inside the Kubernetes cluster.Step 2: Identify correct function
Nginx and Traefik route incoming traffic to the right service based on rules.Final Answer:
To route external traffic to internal Kubernetes services -> Option DQuick Check:
Ingress controller = traffic router [OK]
- Confusing ingress controller with node management
- Thinking ingress stores images
- Mixing ingress with monitoring tools
Solution
Step 1: Recall correct annotation key for ingress class
The standard annotation to specify ingress controller is kubernetes.io/ingress.class.Step 2: Match correct value for Nginx
The value for Nginx ingress controller is "nginx".Final Answer:
kubernetes.io/ingress.class: "nginx" -> Option AQuick Check:
Annotation key = kubernetes.io/ingress.class [OK]
- Using wrong annotation keys
- Mixing Traefik and Nginx values
- Omitting quotes around values
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: "traefik"
spec:
rules:
- host: example.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
What happens when a user visits http://example.com/app/page?Solution
Step 1: Analyze ingress rule for host and path
The rule matches host example.com and path prefix /app, so /app/page matches.Step 2: Check backend service and port
Requests matching the path are sent to app-service on port 80.Final Answer:
Traffic is routed to the app-service on port 80 -> Option CQuick Check:
Path prefix match routes traffic correctly [OK]
- Assuming pathType Prefix is invalid
- Ignoring host match requirement
- Thinking default backend handles matched paths
Solution
Step 1: Identify cause of routing failure
Ingress controller routes traffic only to Ingress resources with matching ingress.class annotation.Step 2: Apply correct annotation for Nginx
Adding kubernetes.io/ingress.class: "nginx" tells Nginx controller to manage this Ingress.Final Answer:
Add annotation kubernetes.io/ingress.class: "nginx" to the Ingress resource -> Option AQuick Check:
Ingress class annotation enables controller routing [OK]
- Changing service port without checking actual port
- Removing annotations disables routing
- Restarting API server does not fix ingress routing
webapp and api, on the same domain using Traefik ingress. The webapp should respond on / and api on /api. Which Ingress configuration correctly achieves this?Solution
Step 1: Understand routing requirements
Both services share the same domain; webapp on root path /, api on /api path.Step 2: Configure single Ingress with multiple paths and correct annotation
One Ingress resource with two paths and annotation kubernetes.io/ingress.class: "traefik" directs traffic properly.Final Answer:
Use one Ingress with two paths: / to webapp and /api to api service, with annotation kubernetes.io/ingress.class: "traefik" -> Option BQuick Check:
Multiple paths in one Ingress with correct class [OK]
- Using wrong ingress.class annotation for Traefik
- Creating multiple Ingresses without annotations
- Missing path for root service
Ready to prove it?
Pass the test and this pattern moves unknown
