Skip to content
This repository was archived by the owner on Jun 20, 2026. It is now read-only.

Add agentgateway provider support to the chart#272

Merged
Gregory-Pereira merged 1 commit into
llm-d-incubation:mainfrom
danehans:gateway-provider-split
Mar 22, 2026
Merged

Add agentgateway provider support to the chart#272
Gregory-Pereira merged 1 commit into
llm-d-incubation:mainfrom
danehans:gateway-provider-split

Conversation

@danehans

@danehans danehans commented Mar 12, 2026

Copy link
Copy Markdown
Contributor

Changes

  • split gateway provider selection from the literal GatewayClass name
  • render AgentgatewayParameters and wire Gateways to the agentgateway provider path
  • let chart test prerequisites and Helm values follow the selected gateway provider
  • refresh generated chart README/schema output and bump the chart to v1.4.0
  • stabilize chart CI workflow dependencies and plugin installation

Testing

  • helm lint charts/llm-d-infra
  • helm template test charts/llm-d-infra --set gateway.provider=agentgateway
  • ct install --charts charts/llm-d-infra --config ct-install.yaml --debug --helm-extra-args '--timeout 500s --kube-context kind-agentgateway-e2e' --helm-extra-set-args '--set gateway.provider=agentgateway'

Partially Fixes: #269

@danehans danehans force-pushed the gateway-provider-split branch 4 times, most recently from fcb2743 to 3d0c923 Compare March 13, 2026 00:12
@danehans

Copy link
Copy Markdown
Contributor Author

xref llm-d/llm-d#421 for the associated llm-d/llm-d changes

@danehans danehans force-pushed the gateway-provider-split branch 2 times, most recently from 74a1262 to 83a7cb1 Compare March 14, 2026 05:49
@danehans

danehans commented Mar 18, 2026

Copy link
Copy Markdown
Contributor Author

I reviewed this setting across both llm-d-infra and llm-d, and I think LoadBalancer is the right default for AgentgatewayParameters.spec.service.spec.type when gateway.provider=agentgateway (and the deprecated kgateway compatibility path).

@Gregory-Pereira Gregory-Pereira left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really awesome - regretting it took me so long to review. I have a few suggested refactors here.

Refactor in this PR that we should go with:

  • decoupling the gateway provider and the class name

Specific changes requested:

  • move data-science-gateway-class to a classname of istio because OSSM uses this class name but its built on top of Istio

Refactor suggested:

  • Refactor the way that we configure and pass the parameterRefs. We want to open the door to supporting everything that GIE supports. I want a common way to configure all those. I have proposed a solution above, take a look and see if you like it.
  • Gateway Exposure type. I suggest we compute this taking 3 factors into account:
    1. Gateway provider's default exposure type - This is the chart’s opinionated default based on the gateway implementation.
    2. Users intended exposure behaviour - This is the user saying what kind of reachability they want, regardless of the provider default.
    3. Hard override for service type - here be dragons but let people do what they want

Comment thread charts/llm-d-infra/Chart.yaml Outdated
Comment thread charts/llm-d-infra/templates/gateway-infrastructure/_helpers.tpl Outdated
Comment thread charts/llm-d-infra/templates/gateway-infrastructure/_helpers.tpl Outdated
Comment thread charts/llm-d-infra/templates/gateway-infrastructure/_helpers.tpl
Comment thread charts/llm-d-infra/templates/gateway-infrastructure/_helpers.tpl
Comment thread charts/llm-d-infra/templates/gateway-infrastructure/_helpers.tpl
Comment on lines 14 to 93
{{- define "gateway.serviceName" -}}
{{- if eq .Values.gateway.gatewayClassName "istio" -}}
{{ include "gateway.fullname" . }}-istio
{{- else }}
{{ include "gateway.fullname" . }}
{{- if eq (include "gateway.provider" .) "istio" -}}
{{- printf "%s-istio" (include "gateway.fullname" .) -}}
{{- else -}}
{{- include "gateway.fullname" . -}}
{{- end -}}
{{- end -}}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIRC this was a stylistic thing to help distinguish what provider we have by the name easily. Should we do this for each provider? Or is that a bad practice?

@danehans danehans Mar 21, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commit 3259ffb keeps the -istio suffix only for the gatewayClassName: istio path. The data-science-gateway-class stays unsuffixed while still using the Istio-backed ConfigMap path.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, I want to have a consistent place to configure the gateway. Every implementation may call this something unique but they all controll configuration of the gateway (ex: gatewayConfig for envoy AI gateway, gatewayParameters for istio and kgateway, AgentgatewayParameters for agentgateway).

My proposal is to have common configurations at the top level, ex:

gateway:
    provider: istio | kgateway ...
    gatewayParameters:
        enabled: true
        resources: {}
        logLevel: warn
    kgateway:
        floatingUserId: true
...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. I'll keep gateway.gatewayParameters as the user interface for common gateway configuration, with:

  • Common knobs at the top level of gateway.gatewayParameters.
  • Provider-specific knobs under nested provider blocks.

That should give us a scalable shape for additional GIE-supported gateways without making every implementation invent a different top-level values block.

Split chart provider selection from GatewayClass naming, route kgateway compatibility through the agentgateway class, and add AgentgatewayParameters rendering.

Refresh generated chart docs and schema, deprecate kgateway in favor of standalone agentgateway, and update CI workflow pins and provider handling.

Signed-off-by: Daneyon Hansen <daneyon.hansen@solo.io>
@danehans danehans force-pushed the gateway-provider-split branch from 83a7cb1 to 3259ffb Compare March 21, 2026 21:24

@Gregory-Pereira Gregory-Pereira left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm 🥳

@Gregory-Pereira Gregory-Pereira merged commit 143620a into llm-d-incubation:main Mar 22, 2026
6 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate kgateway Support to agentgateway

2 participants