Problem
We run an IPv6-only cluster, which needed some patches to deploy it.
As the sandbox API currently defaults to an IPv4-only bind address:
|
bind_address: `0.0.0.0:${process.env.PORT ?? 2000}`, |
Startup then parses it with:
|
const [address, port] = config.bind_address.split(':'); |
This stores bind config as a single host:port string and splits on :, which is incompatible with IPv6 addresses like :: or ::1.
And thus fails for our Service as they are IPv6, while the sandbox API only listens on 0.0.0.0.
Proposed Fix
Add explicit bind host and bind port config:
bind_host: process.env.SANDBOX_BIND_HOST ?? '::'
bind_port: Number(process.env.PORT ?? 2000)
Default SANDBOX_BIND_HOST to IPv6: ::
As the default IPv6 listener also covers IPv4.
This ofc would also need a Helm Chart change to expose this, or an enable_ipv6 flag to set :: to keep 0.0.0.0 as default
Current Workaround
As we had to patch the start-direct-sandbox.sh anyways i just did:
# PATCH: API hardcodes 0.0.0.0; cluster is IPv6-only. Bind to :: instead.
if [ -f "$ROOTFS/sandbox_api/.build/index.js" ]; then
sed -i 's|let\[c,i\]=G\.bind_address\.split(":"),n=pQ()|let c="::",i=Number(process.env.PORT??2000),n=pQ()|g' \
"$ROOTFS/sandbox_api/.build/index.js" \
&& echo "[sandbox] Patched sandbox API bind address to ::" \
|| echo "[sandbox] WARNING: could not patch bind address"
fi
If PRs are welcome i would gladly implement this.
Problem
We run an IPv6-only cluster, which needed some patches to deploy it.
As the sandbox API currently defaults to an IPv4-only bind address:
code-interpreter/api/src/config.ts
Line 49 in 3fa1f6c
Startup then parses it with:
code-interpreter/api/src/index.ts
Line 68 in 3fa1f6c
This stores bind config as a single host:port string and splits on :, which is incompatible with IPv6 addresses like :: or ::1.
And thus fails for our Service as they are IPv6, while the sandbox API only listens on 0.0.0.0.
Proposed Fix
Add explicit bind host and bind port config:
Default
SANDBOX_BIND_HOSTto IPv6:::As the default IPv6 listener also covers IPv4.
This ofc would also need a Helm Chart change to expose this, or an
enable_ipv6flag to set::to keep0.0.0.0as defaultCurrent Workaround
As we had to patch the
start-direct-sandbox.shanyways i just did:If PRs are welcome i would gladly implement this.