Skip to content

Update agentgateway implementation - #28

Merged
EItanya merged 5 commits into
kagent-dev:mainfrom
keithmattix:wire-up-agw-e2es
Sep 10, 2026
Merged

Update agentgateway implementation#28
EItanya merged 5 commits into
kagent-dev:mainfrom
keithmattix:wire-up-agw-e2es

Conversation

@keithmattix

@keithmattix keithmattix commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Not fully working with all upstream substrate tests, but trying to unblock some of the other work

Comment thread internal/e2e/suites/parking/parking_test.go Outdated
Comment thread internal/e2e/suites/networking/grpcingress_test.go
@keithmattix keithmattix changed the title Get agentgateway passing CI Update agentgateway implementation Sep 1, 2026
@EItanya
EItanya force-pushed the main branch 4 times, most recently from 07b8a46 to 243ec3e Compare September 2, 2026 17:46
@keithmattix
keithmattix force-pushed the wire-up-agw-e2es branch 2 times, most recently from 1949b14 to 4d476b2 Compare September 3, 2026 12:58
Comment thread .github/workflows/helm-e2e.yaml
Add e2e.RouterIsAgentgateway, detected from the atenet-router Deployment's
containers, and gate the Envoy-only assertions on it: the h2-to-h1
downgrade contract is Envoy's protocol mirroring to atunnel, which
agentgateway does not implement.
Bump agentgateway to a nightly that authorizes the actor identity before
terminating any CONNECT tunnel and retries stale worker assignments on the
CONNECT leg by evicting and re-resolving through ResumeActor.

substrateEgress accordingly moves from a policy on the internal HTTP route
to frontendPolicies in the egress ConfigMaps (manifests component, MITM
overlay, and the Helm chart): the frontend check covers HTTP, TLS, and
opaque TCP tunnels alike, where the old route policy silently exempted the
TLS and TCP passthrough routes. This closes the hole where a certificate
for an unknown actor could open a tunnel, and makes suspended actors
resumable through the router again.
The e2e-test job's install step waits for each ate-system workload with
the script's default 60s rollout timeout. That default assumes warm
image caches; on a fresh CI runner every image (postgres, the
agentgateway proxy for both router and egress, ...) is cold-pulled from
public registries concurrently, and the first wait in line regularly
exceeds 60s on pull latency alone. Give the install a 300s per-workload
budget, matching the tolerance the helm-e2e workflow already has.
helm-e2e waited for condition=Ready on the counter-microvm ActorTemplate
CRD after deploying the demo. The cutover to the substrate ActorTemplate
proto removed the CRD golden flow and then the CRD itself, so the wait
can never succeed. The demo deploy now creates the substrate template
and waits for its golden snapshot internally, so drop the separate wait
step and point the micro-VM test lane at the substrate fixtures with the
E2E_SANDBOX_CLASS knob pr-workflow already uses.
@keithmattix
keithmattix marked this pull request as ready for review September 10, 2026 18:24
Pick up the latest agentgateway nightly. The frontend policy that
authorizes egress at CONNECT-accept was renamed upstream from
substrateEgress to substrateEgressActorResolution, and the old key now
fails config parsing, so rename it in the manifests and the chart in
the same step.
@EItanya
EItanya merged commit 971d345 into kagent-dev:main Sep 10, 2026
1 of 3 checks passed
EItanya pushed a commit that referenced this pull request Sep 10, 2026
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
teemow added a commit to giantswarm/substrate that referenced this pull request Sep 11, 2026
…e — the line's dataplane (agentgateway#3237) reads it there (#9)

* chart: authorize the egress actor as a frontend policy at CONNECT time

agentgateway#3237 moved the actor check on an egress tunnel from a route
policy on the inner HTTP listener to a frontend policy on the CONNECT
itself (substrateEgress under frontendPolicies) and dropped the
route-level field. A dataplane carrying it refuses the previous config
("unknown field `substrateEgress`") and never becomes ready.

The egress config now declares the policy where that dataplane reads it,
and images.agentgateway pins a build that carries #3237. The two move
together: the previous build accepts only the route-level shape, and a
build without #3237 knows neither the frontend field nor the check.

Same change as kagent-dev#28 for a later dataplane, where the
policy carries the name agentgateway#3318 gave it,
substrateEgressActorResolution.

* ci(fork): the publish refuses a drift between the chart's images.agentgateway and AGENTGATEWAY_IMAGE; ledger row for the frontend-policy egress config
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.

2 participants