What would you like to be added:
A way to enable an EPP feature gate (for example flowControl) on top of an existing plugin configuration without copying the entire EndpointPickerConfig document. This issue proposes (a), a --feature-gates flag, as the primary direction, and (b), structured plugin config in the chart, as a complementary chart-side option.
(a) A --feature-gates EPP flag
Kubelet-style: --feature-gates=flowControl=true.
loadFeatureConfig (pkg/epp/config/loader/configloader.go) parses kubelet-style name=bool entries and defaults bare names to true. The flag can feed the same parser.
- Later
featureGates entries override earlier ones. Appending flag-supplied entries to rawConfig.FeatureGates in Runner.parseConfigurationPhaseOne (cmd/epp/runner/runner.go), after the config file is read, makes flag entries win over file entries.
- The flag definition belongs in
pkg/epp/server/options.go, alongside --config-file.
- No chart change is needed for Helm delivery:
routerlib renders arbitrary EPP flags from router.epp.flags.
(b) Structured plugin config in the chart
Add router.epp.pluginsConfig (a structured map) to routerlib, rendered with toYaml into the ConfigMap (config/charts/routerlib/templates/_config.yaml) alongside the existing pluginsCustomConfig. Helm deep-merges maps across -f files, so an overlay can set featureGates: [flowControl] and inherit plugins and schedulingProfiles from an earlier values file. Limits: Helm replaces lists as a unit, so plugins cannot be merged per-entry; YAML comments are lost in the toYaml round trip; non-Helm deployments are unaffected.
Why is this needed:
Enabling a feature gate requires owning the whole config document via pluginsCustomConfig, which the chart splices into the ConfigMap as a single string. Every llm-d guide that enables flowControl carries a full copy of the optimized-baseline plugin list, and the copies drift: the keda-epp-queue guide's copy no longer matches optimized-baseline's plugin set, and llm-d/llm-d#2248 tracks a guide that broke while working around this gap. Reviewers on llm-d/llm-d#2229 asked for an overlay that adds only the gate. Helm values layering cannot produce one, because layering replaces string values and the whole config is one string.
What would you like to be added:
A way to enable an EPP feature gate (for example
flowControl) on top of an existing plugin configuration without copying the entireEndpointPickerConfigdocument. This issue proposes (a), a--feature-gatesflag, as the primary direction, and (b), structured plugin config in the chart, as a complementary chart-side option.(a) A
--feature-gatesEPP flagKubelet-style:
--feature-gates=flowControl=true.loadFeatureConfig(pkg/epp/config/loader/configloader.go) parses kubelet-stylename=boolentries and defaults bare names totrue. The flag can feed the same parser.featureGatesentries override earlier ones. Appending flag-supplied entries torawConfig.FeatureGatesinRunner.parseConfigurationPhaseOne(cmd/epp/runner/runner.go), after the config file is read, makes flag entries win over file entries.pkg/epp/server/options.go, alongside--config-file.routerlibrenders arbitrary EPP flags fromrouter.epp.flags.(b) Structured plugin config in the chart
Add
router.epp.pluginsConfig(a structured map) torouterlib, rendered withtoYamlinto the ConfigMap (config/charts/routerlib/templates/_config.yaml) alongside the existingpluginsCustomConfig. Helm deep-merges maps across-ffiles, so an overlay can setfeatureGates: [flowControl]and inheritpluginsandschedulingProfilesfrom an earlier values file. Limits: Helm replaces lists as a unit, so plugins cannot be merged per-entry; YAML comments are lost in thetoYamlround trip; non-Helm deployments are unaffected.Why is this needed:
Enabling a feature gate requires owning the whole config document via
pluginsCustomConfig, which the chart splices into the ConfigMap as a single string. Every llm-d guide that enablesflowControlcarries a full copy of the optimized-baseline plugin list, and the copies drift: the keda-epp-queue guide's copy no longer matches optimized-baseline's plugin set, and llm-d/llm-d#2248 tracks a guide that broke while working around this gap. Reviewers on llm-d/llm-d#2229 asked for an overlay that adds only the gate. Helm values layering cannot produce one, because layering replaces string values and the whole config is one string.