Quick summary
Before going deeper, here is the simplest mental model.
What
Ingress is a set of HTTP or HTTPS routing rules for Services.
Important truth
Ingress does nothing by itself. An Ingress controller must implement it.
Big value
One entry layer can route traffic to multiple Services by host or path.
Why Ingress exists
Before Ingress, a common way to expose an application was to create a separate LoadBalancer Service for each application that needed outside access.
That approach works, but it becomes harder to manage when you have many applications or many routes. You may end up with too many public entry points, repeated TLS setup, and extra cost.
Simple problem example
Imagine you have three web apps:
- frontend website
- backend API
- admin portal
Without a shared entry layer, each one might need its own external exposure method. Ingress lets you centralize that routing instead.
What is Kubernetes Ingress?
Kubernetes Ingress is an API object that describes how external HTTP or HTTPS traffic should be routed to Services inside the cluster.
Ingress understands web-oriented concepts such as:
- hostnames
- paths
- TLS certificates
Ingress vs Ingress Controller
This is the biggest source of confusion for beginners.
Ingress
The Kubernetes object that contains routing rules.
Ingress Controller
The actual software that watches those rules and configures traffic handling.
Why both matter
Rules without a controller do nothing in practice.
Different controllers may behave differently, which is why documentation often says to check the controller’s own docs for supported features and annotations.
How traffic actually flows
This is the most important part of the whole topic.
Step by step
- A user sends a request to a domain such as
app.example.com. - DNS resolves that domain to the external entry point for the cluster.
- Traffic reaches the Ingress controller.
- The controller checks Ingress rules to see which host or path matches.
- The request is forwarded to the correct Service.
- The Service sends traffic to one of the backend Pods.
Routing types: host-based and path-based
Ingress usually routes web traffic in two common ways.
Host-based routing
api.example.com goes to one Service, while admin.example.com goes to another.
Path-based routing
/api goes to one Service, while / goes to a frontend Service.
Combined routing
You can combine host and path rules for more structured application entry.
Real example
A company might use:
www.example.com→ frontend Serviceapi.example.com→ backend API Servicewww.example.com/admin→ admin Service
TLS and HTTPS
One of the biggest reasons teams use Ingress is centralized HTTPS handling. The Ingress layer can terminate TLS, meaning it handles the certificate and decrypts the incoming HTTPS request before forwarding traffic onward.
This gives teams a more centralized place to manage:
- certificates
- HTTPS entry
- multiple web applications behind one entry layer
IngressClass and modern configuration
In modern Kubernetes, ingressClassName is used to tell Kubernetes which Ingress controller should handle a given Ingress resource.
This is important in clusters that may have multiple controllers or where the platform team wants clear, explicit behavior.
spec:
ingressClassName: nginx
Annotations and controller-specific behavior
Many Ingress controllers support extra features through annotations. These can control things like rewrites, timeouts, redirects, or special routing behavior.
This is one reason Ingress can feel confusing:
- the main Ingress API is generic
- controllers implement it differently
- advanced behavior often depends on controller-specific annotations
Real-world architecture example
Imagine an online application with three parts:
- frontend website
- backend API
- admin dashboard
Users see one external entry layer, but traffic is split cleanly to different internal Services.
Why this is powerful
It gives a cleaner architecture, fewer public entry points, easier HTTPS management, and a more maintainable routing model for web applications.
Ingress vs Service
Beginners often confuse these two, so it helps to compare them directly.
Service
Provides stable access to backend Pods.
Ingress
Routes external HTTP or HTTPS traffic to Services.
Relationship
Ingress usually points to Services, not directly to Pods.
Common beginner mistakes
- thinking Ingress alone handles traffic without a controller
- confusing Ingress with a Service
- forgetting that Ingress is mainly for HTTP and HTTPS traffic
- not understanding where TLS terminates
- using multiple public LoadBalancers when one shared entry layer would be cleaner
- ignoring controller-specific behavior and annotations
Common interview questions
- What is Kubernetes Ingress? An API object that defines HTTP or HTTPS routing to Services.
- What is an Ingress controller? The software that implements Ingress behavior and handles real traffic.
- Does Ingress work without a controller? No.
- What is the difference between Service and Ingress? Service provides stable access to Pods; Ingress routes external web traffic to Services.
- What is host-based routing? Routing based on domain name.
- What is path-based routing? Routing based on URL path.
- What does TLS termination mean? HTTPS is handled at the Ingress layer before traffic continues inward.
Important note for modern Kubernetes readers
Ingress is still widely used and fully valid to learn, but Kubernetes has moved future feature development toward the Gateway API. That means Ingress remains a very important concept, especially for existing clusters and common production setups, while Gateway is the newer direction for richer traffic management.