-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
User request
Implement a development POC where:
- OpenZiti (controller + router) runs via docker-compose in this repo for development.
platform-serverreconciles required Ziti entities (identities, service, policies) via Ziti Management API.platform-serverconnects to Ziti via the Node SDK.docker-runnerconnects to Ziti via the Node SDK.- Communication between
platform-serveranddocker-runnerhappens via Ziti (keep existing UI/UX unchanged).
Specification (research)
Minimal Ziti docker-compose topology
- Services:
ziti-controller,ziti-edge-routeron a shared compose network. - Controller ports (dev):
- 1280 (Edge Client API)
- 1281 (Management API)
- 6262 (fabric control plane for router)
- Router ports (dev):
- 3022 (edge listener)
- Persist state under a gitignored
.ziti/directory.
Ziti object model (POC: single shared service)
Deterministic naming with prefix dev.agyn-platform:
- Identities:
dev.agyn-platform.platform-server(attributes:app=agyn-platform,env=dev,component=platform-server)dev.agyn-platform.docker-runner(attributes:app=agyn-platform,env=dev,component=docker-runner)
- Service:
dev.agyn-platform.platform-api(attributes:app=agyn-platform,env=dev,service=platform-api)
- Service policies:
- Bind:
dev.agyn-platform.platform-api.bindallows platform-server to bind service - Dial:
dev.agyn-platform.platform-api.dialallows docker-runner to dial service
- Bind:
- Edge-router policies:
dev.agyn-platform.identities.use-routerallows both identities to use the routerdev.agyn-platform.platform-api.on-routerplaces the service on the router
Reconciliation approach (idempotent)
platform-server implements reconciliation using the Ziti Management API:
- Authenticate to management API (password or cert auth), acquire bearer token.
- For each object type: GET by name → create if missing → patch/update if drift.
- Generate enrollment tokens where needed; store identity artifacts in gitignored dev location.
Node SDK identity lifecycle
- SDK loads an identity JSON file (enrolled identity) at runtime.
- Enrollment is a one-time step from an enrollment JWT producing the identity JSON.
- For POC dev, store artifacts under
.ziti/identities/*.json(gitignored).
Dev bootstrap flow
docker compose upbrings up Ziti.- Start platform-server, which reconciles Ziti objects.
- platform-server and docker-runner load identity json and use Ziti for transport.
Acceptance criteria
- Running dev docker compose starts Ziti controller+router.
- platform-server reconciliation is idempotent and can be run repeatedly.
- platform-server and docker-runner both establish Ziti connections using Node SDK.
- Existing platform-server → docker-runner functionality works unchanged from the UI perspective (at least a smoke path).
- Basic docs in repo on how to run the POC.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels