ops: revisit Docker and Kubernetes backend endpoint support completeness
#2,376 opened on Jul 5, 2026
Repository metrics
- Stars
- (4,293 stars)
- PR merge metrics
- (PR metrics pending)
Description
Summary
Revisit the completeness of vllm-sr Docker and Kubernetes deployment support for backend endpoint configuration, Kubernetes endpoint auto-discovery, and dashboard editing/visibility.
Parent roadmap: #2287
Related: #2331, #2332, #2349, #2350, #2351, #2352, #2353, #2355, #2358, #2373, #2374
Related code: src/vllm-sr/cli, src/vllm-sr/cli/config_generator.py, src/vllm-sr/cli/config_translator.py, src/semantic-router/pkg/config/canonical_providers.go, src/semantic-router/pkg/k8s, deploy/operator/api/v1alpha1, deploy/operator/controllers/backend_discovery.go, deploy/operator/controllers/canonical_config_builder.go, deploy/helm, deploy/local, deploy/recipes, dashboard/backend/handlers/config.go, dashboard/backend/handlers/deploy.go, dashboard/backend/handlers/status*.go, dashboard/frontend/src/components/EndpointsEditor.tsx, dashboard/frontend/src/pages/ConfigPage*.tsx
Motivation
H2 adds multiple recipes, backend-aware routing, engine-specific adapters, edge deployments, and richer provider capability contracts. Those features depend on a consistent way to express and manage backend targets across local Docker, Kubernetes/operator, Helm, recipes, and dashboard flows.
The current code already has several related surfaces:
- canonical provider models use
providers.models[].backend_refs[]with fields such asendpoint,base_url,type,provider,protocol,chat_path, and auth/header fields; - Docker/CLI Envoy generation reads
backend.endpointorbackend.base_urland parses host, port, protocol, and path; - operator
vllmEndpoints[].backend.typecurrently supports Kubernetes-native discovery types such askserve,llamastack, andservice; - dashboard endpoint editing currently exposes a narrower endpoint shape such as name, address/endpoint, protocol, and weight.
We need to make the supported matrix explicit and then close the gaps so users can move the same routing config between Docker, Kubernetes, operator-managed deployments, and dashboard editing without losing backend intent.
Scope
Audit and improve support for:
-
Docker/local
vllm-sr serve- canonical
backend_refsusing directendpointtargets such ashost:port; - URL-style targets using
base_urlor full URL strings, including protocol and path handling; - external provider backends that need provider type, base URL, auth header, API key env, API version, custom chat path, or extra headers;
- generated Envoy cluster behavior for DNS, static IPs, HTTPS, path prefixes, and multiple endpoints.
- canonical
-
Kubernetes/operator/Helm
- CRD coverage for backend target kinds beyond the current service discovery enum where needed;
- auto-discovery for Kubernetes-native endpoint types, including direct Service references, label-based services, KServe, Llama Stack, and future endpoint-style targets;
- whether EndpointSlice/Endpoints or service annotations should be used for richer discovery when a Service alone is insufficient;
- canonical translation from discovered Kubernetes objects into
providers.models[].backend_refs[]without losing protocol, path, auth, weight, model alias, or provider metadata; - Helm values translation parity with the canonical config and operator contract.
-
Dashboard
- endpoint editor support for the full backend target contract instead of only the narrow
endpoint/protocol/weightsubset; - validation and preview behavior for both direct URL-style backends and Kubernetes-discovered endpoint types;
- status/readiness display for configured and discovered backend targets;
- safe editing without clobbering fields that the dashboard does not yet render.
- endpoint editor support for the full backend target contract instead of only the narrow
-
Documentation and examples
- reference recipes that demonstrate direct endpoint, full URL/base URL, external provider, Kubernetes Service discovery, and operator-managed discovery;
- a compatibility matrix showing which backend target kinds work in Docker, Helm, operator, dashboard, and examples.
Non-goals
- Do not implement inference-aware load balancing itself here; that remains covered by #2332 and its child issues.
- Do not redesign the full config schema here unless a narrow compatibility gap requires a schema addition.
- Do not turn dashboard editing into an unsafe free-form YAML rewrite that silently drops unknown fields.
- Do not require every Kubernetes platform integration to land in one PR; split implementation gaps into child issues if needed.
Acceptance criteria
- A backend target compatibility matrix exists for Docker/local, Helm, operator/Kubernetes, dashboard, and reference recipes.
- The matrix explicitly covers at least direct
endpoint, full URL orbase_url, external provider target, Kubernetes Service, label-discovered Service, KServe, Llama Stack, and any supported EndpointSlice/Endpoints discovery path. - Gaps are split into focused child issues or PRs with affected surfaces and validation commands.
- Docker/CLI behavior for
endpointversus URL/base URL backend refs is documented and covered by targeted tests. - Kubernetes/operator discovery either supports the agreed endpoint target kinds or documents unsupported kinds with clear validation errors.
- Dashboard config editing preserves backend target fields that it does not render, and renders/validates the agreed supported fields.
- Reference recipes and docs show how to configure the same logical model backend in local Docker and Kubernetes/operator paths where applicable.
- The work cross-links implementation issues with #2332/#2349 backend-aware routing contracts when discovery data becomes runtime telemetry input.
Validation
Use the repo harness to scope follow-up PRs:
make agent-report ENV=cpu CHANGED_FILES="src/vllm-sr/cli src/semantic-router/pkg/config src/semantic-router/pkg/k8s deploy/operator deploy/helm deploy/local deploy/recipes dashboard/backend dashboard/frontend/src"
make agent-lint CHANGED_FILES="src/vllm-sr/cli src/semantic-router/pkg/config src/semantic-router/pkg/k8s deploy/operator deploy/helm deploy/local deploy/recipes dashboard/backend dashboard/frontend/src"
make agent-ci-gate CHANGED_FILES="src/vllm-sr/cli src/semantic-router/pkg/config src/semantic-router/pkg/k8s deploy/operator deploy/helm deploy/local deploy/recipes dashboard/backend dashboard/frontend/src"
Add targeted tests for CLI Envoy generation, operator backend discovery, CRD/webhook validation, Helm translation, dashboard backend config preservation, and frontend endpoint editing as implementation gaps are fixed.