HTTP Routes
HTTPRoute is the standard way to publish HTTP traffic on Kupe Cloud.
Create the route in your workload namespace, point it at a Service, and attach it to
the shared external-gateway in kube-system. Kupe runs the gateway layer for you, so
you do not need a separate ingress controller or a dedicated gateway per app.
Minimal example
Section titled “Minimal example”apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata: name: web namespace: webspec: parentRefs: - name: external-gateway namespace: kube-system hostnames: - web.<tenant>.kupe.cloud rules: - matches: - path: type: PathPrefix value: / backendRefs: - name: web port: 80What matters in this spec
Section titled “What matters in this spec”parentRefsattaches the route to the shared public gatewayhostnamesdefines the public hostname for the applicationbackendRefspoints at theServicethat receives traffic- the route should live in the same namespace as the workload it exposes
For a custom domain instead of a *.kupe.cloud hostname, keep the same route model and
follow Custom Domains.
Common patterns
Section titled “Common patterns”Route an entire hostname to one service
Section titled “Route an entire hostname to one service”This is the most common pattern. One hostname maps to one backend service.
Split traffic by path
Section titled “Split traffic by path”rules: - matches: - path: type: PathPrefix value: /api backendRefs: - name: api port: 80 - matches: - path: type: PathPrefix value: / backendRefs: - name: web port: 80Reuse the same route model for custom domains
Section titled “Reuse the same route model for custom domains”The only real change is the hostname:
hostnames: - app.example.comThe gateway attachment and backend service model stay the same.
Validation
Section titled “Validation”After applying the route, check:
- the route exists in the expected namespace
- the backend
Serviceis present and healthy - the route conditions show
Accepted=True - the route conditions show
ResolvedRefs=True - requests reach the expected backend
Useful checks:
kubectl get httproute -n <namespace>kubectl describe httproute <name> -n <namespace>kubectl get svc,pods -n <namespace>If the route is externally exposed, also test the public URL directly after it becomes ready.
Common first-time mistakes
Section titled “Common first-time mistakes”- using the wrong gateway name or namespace
- pointing
backendRefsat a Service that does not exist - using the wrong service port
- exposing the route before the workload is actually ready
- assuming custom domains need a different route type