Gateway Fabric & Routing
Overview
External traffic enters the cluster through a modern Kubernetes Gateway API implementation using NGINX Gateway Fabric.
Internet Request (e.g. md2pdf.babdelka.com)
│
▼
Cloudflare DNS / Proxy (*.babdelka.com)
│
▼
MetalLB IP Pool (10.0.0.31:80/443)
│
▼
Gateway (my-gateway in default namespace)
│
├─► HTTPRoute (md2pdf-route) ──► md2pdf:3000
├─► HTTPRoute (portal-route) ──► portal:80
├─► HTTPRoute (talentpilot-route) ──► talentpilot:8000
├─► HTTPRoute (grafana) ──► grafana:3000
└─► HTTPRoute (catchall-404) ──► fallback-404:80
Adding a New Route
To route a new hostname to your service:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: myapp-route
namespace: myapp
spec:
parentRefs:
- name: my-gateway
namespace: default
hostnames:
- myapp.babdelka.com
rules:
- backendRefs:
- name: myapp
port: 80
Apply the file with kubectl apply -f httproute.yaml. NGINX Gateway Fabric programs the data plane within milliseconds without reloading pods.