You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(llm-request-router): route LLM workers through backend router
Route worker gRPC registration by HTTP/2 authority and reverse QUIC by SNI through a highly available backend router. Wire it into the LLM addon, expose the required Gateway routes, harden PKI and render validation, and make local self-managed testing use the same path.
Copy file name to clipboardExpand all lines: deploy/helm/gateway-routes/README.md
+25-4Lines changed: 25 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,17 +4,26 @@ This repository contains the Helm chart for deploying NVCF ingress routes via th
4
4
5
5
## Overview
6
6
7
-
The chart deploys `HTTPRoute`, `TCPRoute`, and `ReferenceGrant` resources that attach to an existing Gateway provisioned separately by the cluster operator (e.g. Envoy Gateway, Istio, Traefik, Kong). It also includes optional `PodMonitor` resources for scraping Envoy Gateway proxy metrics with Prometheus.
8
-
9
-
The chart deploys routing configuration only. It does not include any container images. Backend services referenced by the routes (`api`, `nvct-api`, `api-keys`, `invocation`, `llm-api-gateway`, `vanity-gateway`, `reval`, `sis`, `grpc`, `nats`) must already be deployed separately.
7
+
The chart deploys `HTTPRoute`, `GRPCRoute`, `TCPRoute`, `UDPRoute`, and
8
+
`ReferenceGrant` resources that attach to an existing Gateway provisioned
9
+
separately by the cluster operator, such as Envoy Gateway, Istio, Traefik, or
10
+
Kong. It also includes optional `PodMonitor` resources for scraping Envoy
11
+
Gateway proxy metrics with Prometheus.
12
+
13
+
The chart deploys routing configuration only. It does not include any
14
+
container images. Backend services referenced by the routes (`api`,
- A Gateway API compatible controller installed in the cluster
17
-
- An existing `Gateway` resource with an HTTP listener (and TCP listeners if the gRPC or NATS routes are enabled)
25
+
- Existing `Gateway` resources with the listeners required by each enabled route
26
+
- A Gateway controller with `UDPRoute` support when LLM worker routing is enabled
18
27
- The backend services that the routes target, deployed in their respective namespaces
19
28
20
29
## Getting Started
@@ -57,6 +66,8 @@ Important settings to review before deployment:
57
66
-`nvcfGatewayRoutes.gateways.shared.*` for the HTTP Gateway name, namespace, and listener
58
67
-`nvcfGatewayRoutes.gateways.grpc.*` for the TCP Gateway name, namespace, and listener
59
68
-`nvcfGatewayRoutes.gateways.nats.*` for the NATS TCP Gateway name, namespace, and listener
69
+
-`nvcfGatewayRoutes.gateways.llmGrpc.*` for the LLM worker gRPC TCP listener
70
+
-`nvcfGatewayRoutes.gateways.llmQuic.*` for the LLM reverse-tunnel UDP listener
60
71
-`nvcfGatewayRoutes.routes.<route>.enabled` to toggle individual routes
61
72
-`nvcfGatewayRoutes.routes.nvcfApi.grpc.enabled` and
62
73
`nvcfGatewayRoutes.routes.nvctApi.grpc.enabled` to expose API gRPC routes
@@ -87,6 +98,7 @@ Enabled `HTTPRoute` entries must not share a resolved hostname because each `HTT
87
98
|`grpc`| TCPRoute | Not rendered |`grpc.nvcf:10081`|
88
99
|`grpcWorker`| TCPRoute (disabled by default) | Not rendered |`grpc.nvcf:10086`|
89
100
|`nats`| TCPRoute (disabled by default) | Not rendered |`nats.nats-system:4222`|
101
+
|`llmWorker`| TCPRoute and UDPRoute (disabled by default) | Not rendered |`llm-request-router-backend-router.<backend namespace>:50071/TCP,50072/UDP`|
90
102
91
103
Cross-namespace routing is supported via `ReferenceGrant` resources rendered into each backend namespace.
92
104
@@ -97,3 +109,12 @@ Cross-namespace routing is supported via `ReferenceGrant` resources rendered int
97
109
- The `grpc` TCPRoute does not enforce HTTP hostname matching at the Gateway layer. Configure DNS or TCP load balancer routing outside this chart.
98
110
- The `grpcWorker` TCPRoute is beta support for split or multi-cluster gRPC worker callbacks. It carries HTTP/1 CONNECT callback traffic only. Enable it only when the control-plane grpc-proxy runs one replica with HPA disabled. Multi-replica grpc-proxy requires pod-specific callback routing and is not supported by this shared TCPRoute.
99
111
- Enabling the `nats` route requires a reachable TCP listener for NATS on the referenced Gateway. The HTTP Gateway address does not imply NATS reachability unless that same Gateway also has the NATS TCP listener configured.
112
+
- The `llmWorker` routes target Stargate's authority/SNI-aware backend router.
113
+
Set `nvcfGatewayRoutes.routes.llmWorker.backend.namespace` to the effective
114
+
namespace of the `llm-request-router` release. The gateway chart cannot
115
+
derive the namespace of a separate Helm release.
116
+
Use `nvcfGatewayRoutes.routes.llmWorker.backend.grpcPort` for registration
117
+
traffic and `nvcfGatewayRoutes.routes.llmWorker.backend.quicPort` for reverse
118
+
tunnels; this route does not use the generic `backend.port` setting.
119
+
Keep the TCP and UDP Gateways separate when the infrastructure requires
{{- required "nvcfGatewayRoutes.routes.llmWorker.backend.namespace is required when llmWorker.enabled is true".Values.nvcfGatewayRoutes.routes.llmWorker.backend.namespace -}}
58
+
{{- end }}
59
+
56
60
{{/*
57
61
Validate that enabled HTTPRoutes do not compete for the same hostname and
58
62
root PathPrefix match on the shared Gateway. All HTTPRoute templates in this
echo"FAIL: enabled LLM worker routing must require an explicit backend namespace">&2
69
+
exit 1
70
+
fi
71
+
if! grep -Fq -- "nvcfGatewayRoutes.routes.llmWorker.backend.namespace is required when llmWorker.enabled is true""$invalid_backend_namespace_error";then
72
+
echo"FAIL: missing LLM worker backend namespace must return the expected validation error">&2
0 commit comments