Gateway Fabric & Routing

Controller: NGINX Gateway Fabric
LoadBalancer: MetalLB (10.0.0.31)
DNS: Cloudflare (*.babdelka.com)
TLS: Cert-Manager Cloudflare ClusterIssuer

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.


Personal Server Portal • Running on Kubernetes ARM64 • Powered by Just the Docs

This site uses Just the Docs, a documentation theme for Jekyll.