Set an explicit MTU on the Forgejo runner DinD daemons #783
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#783
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Every job container launched through a runner's DinD daemon gets a bridge at
MTU 1500, while the pod network underneath runs at 1230. Packets above 1230
bytes are dropped, so a TLS handshake completes and the server's certificate
response disappears. That is the "ClientHello then stall" symptom the egress
proxy was built to route around.
Measured on kai-server 2026-08-12:
No runner manifest passes
--mtutodockerd, so every daemon takes Docker's1500 default regardless of the network it lands on.
Fix
Add
--mtu=1230to thedockerdargs in each runner manifest, matchingcni0.Why this one matters most
Every other mitigation routes around this defect. The egress proxy exists
because of it, and it is the only candidate that also explains image-build
failures, where a layer pull hits the same ceiling with no pre-commit involved.
docs/forgejo-runner-egress-proxy.mdalready anticipates this: the proxy is"a reliability route, not the final diagnosis of the DinD MTU or network
defect."
Verification
After rollout,
docker -H tcp://<runner-pod-ip>:2375 network inspect bridgereports 1230, and a large HTTPS fetch through a DinD-launched container
completes without the proxy.