Skip to content

atenet: keep the router pod unready until its Envoy is serving - #2325

Merged
Tim Hockin (thockin) merged 1 commit into
agent-substrate:mainfrom
LiorLieberman:router-envoy-readiness
Oct 8, 2026
Merged

Tim Hockin (thockin) merged 1 commit into
agent-substrate:mainfrom
LiorLieberman:router-envoy-readiness

Conversation

@LiorLieberman

Copy link
Copy Markdown
Collaborator

This adds a readiness probe on the envoy container that asks Envoy's /ready through the envoy-metrics listener from #2310, and a manifest test that requires a probe kubelet can actually reach on both gateways.

Wihtout it a router pod can be Ready as soon as its atenet-router container answered /readyz, without checking if envoy is ready

It's a good idea to open an issue first for discussion.

  • Tests pass
  • Appropriate changes to documentation are included in the PR

@destijl Greg Castle (destijl) 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.

gregbot: LGTM

gregbot nit: Separate follow-up observation for the agentgateway overlay: in manifests/ate-install/components/agentgateway/kustomization.yaml (lines 41-74), the atenet-router replacement container agentgateway declares port readiness (15021) but has no readinessProbe (unlike atenet-egress in the same file at lines 135-139, which probes /healthz/ready on readiness). Out of scope for this Envoy PR, but worth a follow-up if the agentgateway overlay is still maintained.

t.Errorf("listener %q forwards to the admin API but its stat prefixes (listener %q, HCM %q) lack \"admin\", so envoyDrainer counts its connections and the drain may never reach zero", r.listener, r.listenerStatPrefix, r.hcmStatPrefix)
}
}
if !seen[m.requiredPath] {

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.

gregbot nit: Now that TestEnvoyReadinessProbeAsksEnvoy requires /ready on every entry in envoyAdminManifests, the egressManifests[0] entry's requiredPath: "/ready" is redundant (and both manifests now have kubelet probes on /ready, so the // PodMonitoring vs // kubelet probes comments on envoyAdminManifests are slightly dated).

if probe.HTTPGet.Path != "/ready" {
t.Errorf("the envoy readiness probe asks %q; it must ask Envoy's /ready", probe.HTTPGet.Path)
}
if probe.HTTPGet.Host != "" || probe.HTTPGet.Scheme == corev1.URISchemeHTTPS {

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.

gregbot nit: Checking probe.HTTPGet.Scheme != "" && probe.HTTPGet.Scheme != corev1.URISchemeHTTP would reject any non-HTTP scheme value (e.g. lowercase https or a typo) rather than only exact "HTTPS".

@thockin
Tim Hockin (thockin) added this pull request to the merge queue Oct 8, 2026
Merged via the queue into agent-substrate:main with commit fc0e358 Oct 8, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants