Ingress (legacy)
Ingress (legacy)
The original answer to “one HTTP entry point for many applications”. You will meet it in every existing cluster - new work belongs on Gateway API.
graph LR
C[Client] --> T[Ingress controller<br/>Traefik]
T -->|host shop.k8s.lab| S1[Service shop]
T -->|host wiki.k8s.lab| S2[Service wiki]
I[Ingress objects] -.read by.-> T
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: shop
spec:
ingressClassName: traefik # which controller
rules:
- host: shop.k8s.lab
http:
paths:
- path: /
pathType: Prefix
backend:
service: { name: shop, port: { number: 80 } }
Why it is legacy
- The spec only knows host + path. Everything else (rewrites, canaries, timeouts) is a controller-specific annotation - not portable.
- One object mixes infrastructure (TLS, entry point) and application routing.
- The API is frozen; development happens in Gateway API.
- ingress-nginx, the most used controller, was retired in March 2026.
An Ingress without a running controller does nothing - silently. Traefik reads both Ingress and Gateway API, which makes it a practical migration path.