refactor(gateway): fail closed without an orchestrator URL; drop stale single-tenant comments
Follow-ups from the #402 review of the single-tenant data-plane teardown. - egress_entrypoint.sh: refuse to launch mitmdump when BOT_BOTTLE_ORCHESTRATOR_URL is unset, so the fail-closed guarantee no longer rests solely on mitmproxy's errorcheck addon exiting on the addon's load-time raise. A misconfigured gateway can never come up as a bare TLS-bumping open proxy with no policy. - orchestrator/gateway.py: ensure_running() raises GatewayError on an empty orchestrator URL — a URL-less launch would only crash-loop the now-resolver-only daemons (egress raises, git-http exits 1, supervise exits 2). The env-injection branch is now unconditional. - Drop stale "single-tenant" / "reads routes.yaml" comments in gateway.py and egress_entrypoint.sh, and the /etc/egress/routes.yaml layout line in Dockerfile.gateway. - Tests: gateway fixtures supply an orchestrator URL; add a refuse-without-URL test and assert the URL env is injected. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UoEZHDjv84ChoZbozQERhJ
This commit is contained in:
@@ -15,11 +15,23 @@
|
||||
# mitmproxy at it. The option REPLACES mitmproxy's default
|
||||
# trust store, so passing the upstream CA alone would break
|
||||
# non-chained hosts.
|
||||
# * `-s /app/egress_addon.py` loads the addon that reads
|
||||
# /etc/egress/routes.yaml.
|
||||
# * `-s /app/egress_addon.py` loads the addon that resolves each
|
||||
# request's policy from the orchestrator control plane by source
|
||||
# IP (PRD 0070). There is no static routes file.
|
||||
|
||||
set -e
|
||||
|
||||
# Fail closed on a missing policy source. The addon itself raises at
|
||||
# load when BOT_BOTTLE_ORCHESTRATOR_URL is unset (so mitmdump exits via
|
||||
# its errorcheck addon), but that leaves the fail-closed guarantee at the
|
||||
# mercy of a mitmproxy version keeping that behavior. Refuse here too, so
|
||||
# a misconfigured gateway can never come up as a bare TLS-bumping open
|
||||
# proxy with no policy — independent of mitmproxy's startup-error handling.
|
||||
if [ -z "$BOT_BOTTLE_ORCHESTRATOR_URL" ]; then
|
||||
echo "egress: BOT_BOTTLE_ORCHESTRATOR_URL is required (no static routes fallback)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Pin mitmproxy's config dir to the bind-mount location of its CA
|
||||
# regardless of which user mitmdump runs as. In the legacy
|
||||
# four-daemon setup (Dockerfile.egress, USER mitmproxy) this
|
||||
|
||||
Reference in New Issue
Block a user