fix: drop the destination allowlist from the runner egress proxy #781
No reviewers
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!781
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/egress-proxy-open"
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?
Follows the merged
code.forgejo.orgaddition by removing the thing that made it necessary.Why the allowlist went
It gated nothing. There is no NetworkPolicy anywhere in
deploy/, so runner pods carry unrestricted direct egress right beside the proxy, and the docs already said so: the proxy "does not reroute unrelated CI" and "ordinary CI keeps its existing direct egress path." Anything wanting an arbitrary host took the direct route and always could.What it cost was real and recurring. Adding a lint hook to a game-server repo needed an infrastructure PR and a Flux roll. That inverts the rule that a shipped repo never reaches up a layer for its own config, and the
code.forgejo.orgaddition was that tax being paid one host at a time.What still binds
Method and port remain the whole boundary: CONNECT only, 443 only, no TLS termination, no credentials, no caching, and a ClusterIP that only in-cluster pods can reach.
http_access deny allstays the genuine terminal rule instead of dead text sitting under anallow all.The guard in
scripts/check-forgejo-runner-config.pyrestated the allowlist host by host, so it moves with the policy it encodes. It now asserts the method and port rules that still bind.Verification
Against the digest-pinned image, not by reading:
squid -k parseclean, no warningscode.forgejo.orgtunnels 200, the exact host that blocked sirens-echocrates.ioandexample.comtunnel, neither ever allowlistedpre-commit run --all-filesgreen.One thing I tried and backed out
I wanted access logging on, since the destination set is no longer the record.
stdio:/dev/stdout,stdio:/dev/fd/1, anddaemon:/dev/stdouteach crash this image at startup in a non-TTY container, which is exactly the Kubernetes condition. It only reproduces detached, so it would have passed a casual foreground check and taken both replicas down on rollout. Logging stays off and the doc records why. Worth a follow-up, not worth bundling here.After merge
Flux rolls the new ConfigMap on the bumped
config-revision. Re-running coilyco-gaming/sirens-echo#103 CI is the end-to-end check.