Phase 3 — Ingress Controller
Expose services running in the cluster to the local network.
Install NGINX Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml
Use the baremetal provider — this is for bare-metal nodes without a cloud load balancer.
Verify Installation
kubectl get pods -n ingress-nginx
Wait until the ingress controller pod shows Running.
How It Works
External request → NodePort (30000-32767)
→ Ingress Controller
→ Service
→ Pod
On bare-metal, you access apps via http://10.0.0.2:<nodeport> or with a local DNS entry pointing to a node IP.
Done When
✔ ingress-nginx pod Running
✔ Can reach services via node IP