Repository navigation
model-serving: remove the classic InferenceService path — llm-d only #574
Description
Problem
The connectivity chart carried two serving paths: the classic KServe InferenceService on the chart's vLLM ClusterServingRuntime (modelServing.runtime, modelServing.additionalRuntimes, the classic predictor pod shape in the policies, network policies and policy exception, the v1beta1 check behind kserve.requireApi, the runtime/runtimes keys of the discovery ConfigMap, the kserve-crd/kserve-resources components) and the llm-d path (LLMInferenceService on the well-known LLMInferenceServiceConfigs, the models Gateway). Every shipped preset is composed onto the llm-d template by model-manager; the classic path is served nowhere the platform is deployed to stay. Two paths meant two pod shapes to secure, two argument grammars to keep in step (#549) and a runtime list that existed only for the classic path (#550, #561).
Solution
Shipped in agent-platform 4.44.0 (#583): llm-d is the one serving path. Gone from both charts and refused by the render naming the key — no alias, no fallback, no deprecation window: the components kserve-crd and kserve-resources with their values blocks, modelServing.runtime, modelServing.additionalRuntimes, modelServing.networkPolicy.predictor (additionalIngressNamespaces sits at modelServing.networkPolicy), modelServing.serving.deploymentStrategyType and .timeoutSeconds, the preset fields spec.runtime and spec.predictor, the discovery ConfigMap's runtime and runtimes. kserve-llmisvc-crd ships every CRD the llm-d controller needs (clusterstoragecontainers included); kserve-llmisvc-resources renders the shared objects itself (createSharedResources: true, deploymentMode: Standard) and receives the derived models-Gateway reference; kserve.requireApi checks serving.kserve.io/v1alpha2; the policies, network policies and PolicyException select the LLMInferenceService workload pod alone. model-manager 1.0.0 (giantswarm/model-manager#134) is the manager's side and is admitted by the widened range; the serving slice composed by cluster-manager follows in giantswarm/cluster-manager#78. An installation whose values carry a removed key, or a model still served as an InferenceService, has UPGRADE.md's steps.
Acceptance criteria
-
grep -ri 'ClusterServingRuntime\|InferenceService\b\|additionalRuntimes\|modelServing.runtime' helm/finds onlyLLMInferenceServiceand its config — the template and value removals of https://github.com/giantswarm/agent-platform/pull/583/files; the remaining mentions are the refusal messages. -
helm templatewith the CI values renders noClusterServingRuntimeand noserving.kserve.io/v1beta1object; the schema rejectsmodelServing.runtimeandmodelServing.additionalRuntimes—verify-wiring,verify-serving-sliceandverify-model-serving-policiesin https://github.com/giantswarm/agent-platform/pull/583/checks. - The agentlab serving proof passes with a shipped preset on the llm-d path — the Verified section of feat(model-serving): remove the classic InferenceService serving path — llm-d is the one serving path #583 (fresh lab,
serving-testend to end; the lab's serving switch composes the llm-d components alone: feat(serving): the serving switch turns the llm-d components on alone agentlab#226). - modelServing.additionalRuntimes: inherited supportedModelFormats auto-select at the default's priority, so KServe refuses the first additional runtime #561 is closed as removed with the feature; the README's model-serving section describes one path — modelServing.additionalRuntimes: inherited supportedModelFormats auto-select at the default's priority, so KServe refuses the first additional runtime #561, https://github.com/giantswarm/agent-platform/blob/main/README.md.
Related
Sibling issues of the same change (one serving path, every image from gsoci, all signed): #575, #554, giantswarm/model-manager#134, giantswarm/agentlab#221, giantswarm/kserve#80, giantswarm/kserve#81, giantswarm/retagger#1227, giantswarm/vllm#66, giantswarm/llm-d#17. Epic: giantswarm/giantswarm#37853.
Activity
feat: every image default from gsoci; modelServing.imageVerification …
feat: every image default from gsoci; modelServing.imageVerification …
feat(model-serving): remove the classic InferenceService serving path…
feat: every image default from gsoci; modelServing.imageVerification …
feat(model-serving): remove the classic InferenceService serving path…
feat(model-serving): remove the classic InferenceService serving path…
feat(agent-platform): serving is model-manager's load_model and the K…
feat(agent-platform): serving is model-manager's load_model and the K…
feat(model-serving): remove the classic InferenceService serving path…
teemow commentedon Sep 19, 2026
Shipped in agent-platform 4.44.0 (#583, merged as a492727): the classic
InferenceServicepath is removed from both charts, the removed keys are refused by the render, and #561 closed with it. The lab proof and the CI evidence are in the PR's Verified section; the serving slice's consumer follows in giantswarm/cluster-manager#78.fix: serving slice composes the llm-d control plane alone (#78) (#82)