run-demo.sh opens a 2x2 tmux grid: egress-IP table looping in a netshoot pod, kubectl get px watch, and both create scripts running with COUNT (default 4) proxies. show-egress-ips-table.sh is the pane-sized one-line-per-proxy variant used by the driver. Co-Authored-By: Claude <noreply@anthropic.com>
56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
# Execution: Demo scripts
|
|
|
|
Plan: [2026-08-11-2220-demo-scripts.md](../plans/2026-08-11-2220-demo-scripts.md)
|
|
|
|
- [x] Step 0 — Branch `feat/demo-scripts` + plan commit
|
|
- [x] Step 1 — `docs/demo/show-egress-ips.sh`
|
|
- [x] Extra (added iteratively, not in the original plan) — proxy-creation scripts
|
|
|
|
## Step 0 + Step 1
|
|
|
|
Branched off `main`, committed the plan alone, then wrote
|
|
`docs/demo/show-egress-ips.sh`: takes `BASE_URL` as its argument, lists
|
|
`/v1/proxies` (bearer auth via optional `TOKEN` env), probes each healthy
|
|
proxy with `curl -x http://ip:port` against an IP-echo site
|
|
(`IP_ECHO_URL`, default ipify JSON), banners which proxy each request goes
|
|
through, skips unhealthy ones, and ends with a probed/skipped/failed
|
|
summary. Per user request the script was left uncommitted for iteration
|
|
and no verification beyond `bash -n` was run.
|
|
|
|
## Extra — create-kubernetes-proxies.sh, create-gcp-proxies.sh
|
|
|
|
Added on the same branch before the first commit:
|
|
|
|
- `create-kubernetes-proxies.sh <count>` — creates
|
|
`proxy-kubernetes-demo-1..N` with the kubernetes provider, spec taken
|
|
from `config/samples/proxy_kubernetes.yaml`, applied via
|
|
`kubectl apply -f -` heredocs. Optional `NAMESPACE` env.
|
|
- `create-gcp-proxies.sh <count>` — creates `proxy-gcp-demo-1..N` from the
|
|
user-supplied gcp-eu manifest (e2-micro, Ubuntu 24.04, Squid
|
|
cloud-init), each with a zone picked randomly from a hardcoded list of
|
|
27 EU zones so the fleet gets egress IPs from different locations.
|
|
Env overrides: `ZONES`, `GCP_PROVIDER` (default `gcp-eu`), `NAMESPACE`.
|
|
|
|
## Extra — run-demo.sh, show-egress-ips-table.sh
|
|
|
|
Second round of iterative additions:
|
|
|
|
- `run-demo.sh` — tmux demo driver: 2x2 tiled grid with the egress-IP
|
|
table looping every 10s inside a netshoot pod (script `kubectl cp`'d
|
|
into the pod, `BASE_URL` set to the in-cluster Service FQDN),
|
|
`watch -n3 kubectl get px`, and both create scripts auto-running with
|
|
`COUNT` proxies each (default 4). Env knobs: `COUNT`, `SESSION`,
|
|
`NETSHOOT_POD`, `DEMO_DIR` (defaults to the script's own dir).
|
|
- `show-egress-ips-table.sh` — condensed one-line-per-proxy variant of
|
|
`show-egress-ips.sh` sized for a tmux pane: PROXY / ENDPOINT /
|
|
LOCATION (zone→geo attribute fallback) / EGRESS-IP columns, with
|
|
`(unhealthy)` and `FAILED` inline instead of verbose output. The
|
|
verbose script stays for standalone use; the demo driver uses the
|
|
table variant.
|
|
|
|
Worth noting: beyond the user's sample manifest, the gcp script also
|
|
writes the picked zone into `attributes.zone`, so the discovery API
|
|
exposes each proxy's location and leases can select on it. The zone list
|
|
is static — if a project lacks quota in some region, `ZONES` narrows the
|
|
pool; nothing validates zones against the live project.
|