Skip to content

ci: run the IPv6-only e2e job on both sandbox classes - #1356

Closed
Yuan Gao (ygao-g) wants to merge 2 commits into
agent-substrate:mainfrom
ygao-g:ci-ipv6-microvm-lane
Closed

ci: run the IPv6-only e2e job on both sandbox classes#1356
Yuan Gao (ygao-g) wants to merge 2 commits into
agent-substrate:mainfrom
ygao-g:ci-ipv6-microvm-lane

Conversation

@ygao-g

@ygao-g Yuan Gao (ygao-g) commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Superseded by #939, which now carries both commits unchanged — the lane, then
the micro-VM leg.

Both pull requests add .github/workflows/e2e-ipv6.yaml, so only one of them
could ever merge, and #939 is the one #958, #1275 and #1065 already point at.
Review there.

No CI job exercises IPv6-only, so nothing catches a change that breaks it,
and the IPv6 work is a set of changes that do little apart. This builds a
single-stack IPv6 kind cluster, installs the full system and runs the
networking suite, where every test that can tell one address family from
another lives. It asserts the cluster really is single-stack, and that
cluster DNS is the shape an IPv6-only install needs, before installing
anything -- so a green run cannot be vacuous.

It carries no copy of what it exercises: dispatch it with a list of pull
requests and it merges them onto main for the length of the run. It stays
out of the e2e-test gate, so it never blocks a pull request.
The IPv6-only lane only ever ran gVisor, so nothing in CI booted a
micro-VM guest on a cluster that has IPv6 -- which is the one
configuration where the two classes diverge. gVisor's runsc adopts the
interior netns wholesale and picks the actor's addresses up for free,
while a micro-VM's eth0 is a tap cross-connected to that netns at L2 and
the guest has to be told over the kata-agent channel. The job now
enables KVM, asserts the node really got /dev/kvm, deploys the micro-VM
counter and egress demos, and replays the networking suite under
E2E_SANDBOX_CLASS=microvm.

Asset staging is the step a v6-only cluster breaks, because the rustfs
endpoint is built from a ClusterIP that here is a bare IPv6 literal, so
the job fails early and by name when that fix is not in the tree. The
vacuous-green guard covers the second log but deliberately does not gain
the dual-stack job's per-test assertions: on a single-stack cluster
TestActorIngressPerFamily skips itself by design. Part of agent-substrate#246.
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.

2 participants