Overview
Datum Cloud uses the Kubernetes Gateway API to expose services and manage ingress traffic. The Gateway API provides a modern, extensible way to configure load balancing, routing, and traffic management.Gateway API resources are part of the standard Kubernetes Gateway API (
gateway.networking.k8s.io/v1).Gateway API Resources
The Gateway API consists of three main resources:- GatewayClass - Defines the gateway implementation (e.g., GCP Load Balancer, Nginx)
- Gateway - Deploys a load balancer instance
- HTTPRoute - Routes HTTP traffic to services
GatewayClass
Defines the class of gateway implementation to use.GatewayClass Fields
The name of the controller that implements this gateway class.Example:
datum.net/gateway-controllerHuman-readable description of the gateway class.
Reference to provider-specific configuration parameters.
Gateway
Deploys an instance of a load balancer.Gateway Metadata
The name of the gateway. Must be unique within the namespace.
The project namespace. Format:
project-<project-name>Gateway Spec
Reference to the GatewayClass to use.
List of listeners that define how to accept traffic.
Requested addresses for the gateway (e.g., static IPs).
Gateway Status
Conditions describing the gateway state.Common conditions:
Accepted: Gateway configuration is validProgrammed: Gateway is configured in the data planeReady: Gateway is ready to accept traffic
Assigned addresses for the gateway.Each address includes:
type: Address type (IPAddress, Hostname)value: The actual address value
Status for each listener.Each listener status includes:
name: Listener namesupportedKinds: Route kinds this listener supportsattachedRoutes: Number of routes attachedconditions: Listener-specific conditions
HTTPRoute
Routes HTTP traffic from a Gateway to backend services.HTTPRoute Metadata
The name of the route. Must be unique within the namespace.
The project namespace. Format:
project-<project-name>HTTPRoute Spec
References to Gateways this route should attach to.
Hostnames this route should match.Examples:
www.example.com, *.example.comList of routing rules.
HTTPRoute Status
Status for each parent Gateway.Each parent status includes:
parentRef: Reference to the parent Gatewayconditions: Route attachment conditionscontrollerName: Controller managing this route
Examples
Simple HTTP Gateway
HTTPS Gateway with TLS
Advanced Routing with Path-Based Rules
Traffic Splitting (Canary Deployment)
kubectl Commands
Gateway Commands
HTTPRoute Commands
GatewayClass Commands
Related Resources
- Workload - Deploy applications to expose via gateways
- Network - Network infrastructure for gateway connectivity
- Project - Gateways are scoped to projects
Troubleshooting
Gateway not getting an IP address
Gateway not getting an IP address
Check:
- View gateway status:
kubectl describe gateway <name> -n <namespace> - Check gateway conditions for errors
- Verify GatewayClass controller is running
- Check cloud provider quota for load balancers
HTTPRoute not routing traffic
HTTPRoute not routing traffic
Check:
- Verify route is attached:
kubectl get httproute <name> -n <namespace> -o yaml - Check status.parents for attachment status
- Verify backend service exists and has endpoints
- Test with curl using the gateway IP address
TLS certificate not working
TLS certificate not working
Check:
- Verify the certificate secret exists:
kubectl get secret <cert-name> -n <namespace> - Check secret has tls.crt and tls.key data
- Verify hostname matches certificate CN/SAN
- Check gateway listener conditions for TLS errors