Skip to content

feat(connectivity): a VerticalPodAutoscaler for the agentgateway data plane and the controller behind one auto knob; the controller gets a PodDisruptionBudget and a hostname spread (agentgateway chart 2.1.2) - #376

Draft
paurosello wants to merge 1 commit into
agentgateway-dataplane-ha-3xfrom
agentgateway-vpa-controller-ha-3x
Draft

Conversation

@paurosello

Copy link
Copy Markdown
Contributor

Draft. 3.x line: a feat: on the fixes-only line — needs the team's agreement before it merges (migration guidance: the old line takes fixes unless agreed; a feat: releases 3.24.0, inside the fleet's range). Ported by hand from #375 onto #374's branch; stacks on #374 and waits for giantswarm/agentgateway#51 to release as 2.1.2 — make verify-components-charts is red until then (on this line the pull finds no version satisfying >=2.1.2 <3.0.0). Do not merge before 2.1.2 is in oci://gsoci.azurecr.io/charts/giantswarm/agentgateway: with the range floor unresolved, the agentgateway HelmRelease is not Ready and every release that depends on it (connectivity, agent-platform-mcps, everything behind connectivity) holds its next generation until it is.

What

Same change as #375, see its description: gateway.parameters.verticalPodAutoscaler (enabled: auto) renders a VerticalPodAutoscaler on the data-plane Deployment when autoscaling.k8s.io/v1 is served; the meta chart resolves the knob once and forwards it; the forwarded agentgateway: block gains controller.podDisruptionBudget: {maxUnavailable: 1}, a hostname topologySpreadConstraints entry and a requests-only controller.verticalPodAutoscaler (emptied to {} where the knob resolves false); components.agentgateway.versionRange is >=2.1.2 <3.0.0, the BOM example pins 2.1.2. New make verify-dataplane-vpa in this line's CI list, verify-auto gains the vpa-only shape, tests/verify-agentgateway-wiring.py holds the controller's budget and spread, tests/verify-components-charts.py gains agentgateway (this line's simpler roster: red on the pull until 2.1.2).

Why on the fleet

Every management cluster runs VPA 1.5.1 in Auto mode on its platform components already; the agentgateway data plane and controller are the exception, on the path every MCP and model call crosses. #374 could give the controller only a second replica: the packaging chart's schema rejected a budget, a spread and a VPA until #51.

Verified

Checklist

  • Update changelog in CHANGELOG.md.
  • Make sure values.yaml and values.schema.json are valid.

… plane and the controller behind one auto knob; the controller gets a PodDisruptionBudget and a hostname spread (agentgateway chart 2.1.2)

Stacks on #373 (two data-plane replicas behind a PodDisruptionBudget). The
controller sets the data-plane container's cpu/memory requests from its own
defaults (100m/128Mi; the pod idles at 1m/10Mi on the fleet) and itself uses
~185Mi against a 128Mi request. The fleet's management clusters run VPA 1.5.1
in eviction-based Auto mode on 76 objects already.

gateway.parameters.verticalPodAutoscaler (enabled: auto, updateMode, minAllowed,
maxAllowed) is a cluster-shape knob like the others: `auto` follows
autoscaling.k8s.io/v1 being served, resolved once by the meta chart and
forwarded resolved; the connectivity chart renders the data-plane VPA named
after gateway.name on the deployer's Deployment, and the same answer empties
the forwarded agentgateway.controller.verticalPodAutoscaler to {} where the
API is absent (a kind lab installs). The controller's VPA is requests-only:
the chart's fixed limits (500m/512Mi) bound the recommendation, so the limits
never scale with the request. The forwarded agentgateway block also carries
controller.podDisruptionBudget (maxUnavailable 1) and a root
topologySpreadConstraints entry on kubernetes.io/hostname selecting the
controller pods.

The packaging chart's schema accepts these keys from agentgateway 2.1.2
(giantswarm/agentgateway#51), so components.agentgateway.versionRange is
>=2.1.2 <3.0.0 and the BOM example pins 2.1.2. MERGE ORDER: release the
packaging chart first. Until 2.1.2 is published the agentgateway OCIRepository
resolves nothing, its HelmRelease is not Ready and every release that
dependsOn it (connectivity, agent-platform-mcps, everything behind
connectivity) holds its next generation; the running releases keep running.
make verify-components-charts renders the forwarded block against the newest
published chart and is red for exactly that reason until 2.1.2 exists.

Tests: make verify-dataplane-vpa (in the CI list), verify-auto's vpa-only shape
and the knob on every shape, tests/verify-agentgateway-wiring.py for the
controller's budget and spread. Contrarian review folded in: the merge-order
blast radius, requests-only for the controller, the cpu leaves accept a number,
best-effort wording for the spread.

3.x line: a feat on the fixes-only line, ported by hand from main (agent-platform#375); needs the team's agreement before it merges, and agentgateway 2.1.2 published first.
@circleci-architect

Copy link
Copy Markdown

Published Helm chart agent-platform

3.23.2-dev.agentgatew--oller-ha-3x.2026-09-11.09-52-26.h365ffbd
Chart agent-platform
Version 3.23.2-dev.agentgatew--oller-ha-3x.2026-09-11.09-52-26.h365ffbd
OCI reference oci://gsoci.azurecr.io/charts/giantswarm/agent-platform:3.23.2-dev.agentgatew--oller-ha-3x.2026-09-11.09-52-26.h365ffbd
Digest sha256:29f5b85c88743775a771af304ff15156b1a641d14da9f47f7addad0babb3aed0
Registry public — gsoci.azurecr.io
Git catalog giantswarm-test-catalog (index)
Pull this chart
helm pull oci://gsoci.azurecr.io/charts/giantswarm/agent-platform --version 3.23.2-dev.agentgatew--oller-ha-3x.2026-09-11.09-52-26.h365ffbd

Posted by architect-orb · build 5861 · commit 365ffbd · updated in place on every push

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant