Weighted canary HTTPRoute
Split traffic 90/10 across stable and canary backends by weight
kubectl apply -f - <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: {name: web, namespace: <ns>}
spec:
parentRefs: [{name: gw}]
rules:
- backendRefs:
- {name: web-stable, port: 80, weight: 90}
- {name: web-canary, port: 80, weight: 10}
EOF
- tool
- gateway-api5 commands
More gateway-api commands
-
kubectl apply -f - <<'EOF' apiVersion: gateway.networking.k8s.io/v1beta1 kind: ReferenceGrant metadata: {name: allow-routes, namespace: backend} spec: from: [{group: gateway.networking.k8s.io, kind: HTTPRoute, namespace: edge}] to: [{group: "", kind: Service}] EOFPermit HTTPRoute in edge ns to target Services in backend ns
-
kubectl apply -f - <<'EOF' apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: {name: gw, namespace: <ns>} spec: gatewayClassName: <name> listeners: - name: https protocol: HTTPS port: 443 tls: mode: Terminate certificateRefs: [{name: tls-cert}] EOFTerminate TLS at the gateway via certificateRefs to a Secret
-
kubectl describe httproute <name> -n <ns> | grep -A8 ConditionsInspect Accepted/ResolvedRefs status to debug why a route is not attached
-
kubectl get gatewayclass,gateway,httproute -AOne-shot view of classes, gateways and routes across all namespaces