This page walks you from a clean machine to a running stack and a successful provision.
- macOS, Linux, or WSL2
- Docker 20+ and Docker Compose
.NET 8 SDK(the repo also builds cleanly against .NET 9 —global.jsonis set to roll forward)curl,jq,python3(for the demo scripts)
If you only need to run the stack and don't intend to develop, you can skip the .NET SDK.
git clone https://github.com/your-org/open-edge-platform.git
cd open-edge-platform
docker-compose up --buildThe first build is slow (it pulls .NET SDK + Envoy + Postgres). Subsequent runs are cached.
Watch the logs. You should see, in order:
postgresreportsdatabase system is ready to accept connectionsrabbitmqreportsServer startup completeredisreportsReady to accept connectionsservice-brokerreportsNow listening on: http://0.0.0.0:8080control-planereportsNow listening on: http://0.0.0.0:8081provisioning-workerreportsMassTransit bus startedenvoylogslds: add/update listeneronce the control plane pushes config
curl -s http://localhost:8080/health | jq
curl -s http://localhost:8081/health | jq
curl -s http://localhost:8081/api/proxies | jqThe third call should show the connected Envoy node (only after the stack is fully up).
./scripts/provision-example.sh demo-1 api.example.comBehind the scenes:
- The script PUTs the OSB provision payload.
- The broker persists the instance with state
Pendingand publishesProvisioningRequested. - The worker consumes the event, picks regions, resolves DNS, and publishes
ProvisioningCompleted. - The control plane consumes the completed event, builds the xDS snapshot, persists it, and pushes it to connected Envoy proxies.
- The script polls
/last_operationuntil it readssucceeded.
curl -s http://localhost:9901/config_dump | jq '.configs[] | select(.["@type"] | contains("Dump")) | .name? // .static_listeners? // ._?'
curl -s http://localhost:9901/listeners
curl -s http://localhost:9901/clustersYou should see listener_demo-1 in the LDS dump and cluster_my-service_demo-1 in the CDS dump.
curl -s http://localhost:8081/api/snapshots | jq
curl -s http://localhost:8081/api/snapshots/demo-1 | jqdocker-compose logs -f service-broker
docker-compose logs -f provisioning-worker
docker-compose logs -f control-planedotnet test OpenEdgePlatform.slnThe integration tests use an in-memory EF provider and the MassTransit test harness, so they don't need Docker.
docker-compose down -vThe -v removes the Postgres volume, giving you a clean slate.