Kubernetes Ingress: External Access to Your Services
Ingress provides HTTP/HTTPS routing to services based on hostname or path. It’s more powerful than NodePort or LoadBalancer for web applications.
Ingress vs Service Types
| Feature | NodePort | LoadBalancer | Ingress |
|---|---|---|---|
| L4/L7 | L4 | L4 | L7 |
| TLS | Manual | Manual | Built-in |
| Path routing | No | No | Yes |
| Host routing | No | No | Yes |
| Cost | Free | Per LB | One LB |
Prerequisites
You need an Ingress Controller (e.g., NGINX, Traefik):
# Install NGINX Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yamlBasic Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80Path-Based Routing
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-ingress
spec:
rules:
- host: api.example.com
http:
paths:
- path: /users
pathType: Prefix
backend:
service:
name: users-service
port:
number: 8080
- path: /products
pathType: Prefix
backend:
service:
name: products-service
port:
number: 8080Host-Based Routing
spec:
rules:
- host: app1.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app1
port:
number: 80
- host: app2.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app2
port:
number: 80TLS Configuration
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tls-ingress
spec:
tls:
- hosts:
- secure.example.com
secretName: tls-secret
rules:
- host: secure.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: secure-app
port:
number: 443Create TLS Secret
kubectl create secret tls tls-secret --cert=tls.crt --key=tls.keyDebugging Ingress
kubectl get ingress
kubectl describe ingress my-ingress
kubectl logs -n ingress-nginx deployment/ingress-nginx-controllerPractice Ingress
Ingress configuration appears in CKA and CKAD exams. Practice at Sailor.sh.