gw-08 — Execution
Prerequisites
- Go ≥ 1.25 (stdlib only, offline). Optional for the real-Envoy path:
func-e/getenvoy+go-control-plane(see steps/01).
One-shot
cd gw-08-envoy-xds-control-plane && bash scripts/verify.sh # tests + control-loop demo
Per-language workflow (Go)
cd gw-08-envoy-xds-control-plane/src/go
go test -race -count=1 ./... # snapshot consistency, fingerprint, ACK/NACK, reconcile
go run ./cmd/xdsdemo # reconcile + ACK + debounce + reject-keeps-last-good
Package map
| File | What |
|---|---|
xds/resource.go | LDS/RDS/CDS/EDS resources, snapshot, consistency (ADS ordering), content-hash version |
xds/cache.go | snapshot cache per node, subscribe/push, ACK/NACK + last-known-good tracking |
xds/reconcile.go | level-triggered reconcile loop with debounce + keep-last-good-on-error |
cmd/xdsdemo | the control-loop demonstration |
Driving real Envoy
steps/01-minimal-xds-server.md shows the go-control-plane wiring and
the Envoy bootstrap to point a real proxy at an xDS server. The protocol
mechanics there (snapshot/version/ACK/NACK/ADS) are exactly what this
lab's xds package implements.
See GUIDE.md for the deep dive.