Networking: Services, DNS, and IngressLesson 3.3
Kubernetes Ingress: how to route HTTP traffic to multiple services
Ingress resource, Ingress controller, path-based routing, host-based routing, TLS termination, nginx ingress controller, IngressClass, backend service reference
Ingress Routes External HTTP to Internal Services
Rather than creating one LoadBalancer per Service (expensive), Ingress lets a single entry point route HTTP/HTTPS traffic to multiple Services based on path or hostname.
Install nginx Ingress Controller (kind)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
# Wait for it to be ready
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=90sPath-Based Routing
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: myapp.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-svc
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 80