verae-ops/06-linking-services.md

2.2 KiB

6. Linking dependent services

Every process learns peers from environment variables and fleet service JSON. There is no service mesh.

Environment map

Process Variable Points at
Zapier cloud app MIDDLEWARE_BASE_URL Public zappier-edge HTTPS (prod) or middleware (lab)
zappier-edge ZAPPIER_UPSTREAM or internal proxy target middleware :3100
middleware NATS_URL nats://nats1:4222,nats://nats2:4222,nats://nats3:4222
middleware VERAE_API_BASE_URL https://api.veraetime.net
middleware MOCK_VERAE true only in lab
worm / tree-node / aggregator / poller NATS_URL same cluster
fleet NATS_URL (monitor only) same; publicBind=false
fleet SSH identityFile path on the operator disk

HTTPS hops (must work)

curl -H "x-api-key: $KEY" https://zappier.example.com/v1/status
# edge meters, then
curl http://127.0.0.1:3100/health

If Zapier gets 401/402, fix keys and the rate card on zappier-edge — not NATS.

NATS hops (must stay private)

Address From To
verae.zapier.jobs.watch middleware job-poller (queue)
verae.zapier.jobs.events poller middleware wait
verae.zapier.webhooks.deliver middleware webhook-deliver
verae.archive.put splitter worm / tree-node
verae.archive.query aggregator all worm/tree (broadcast)
verae.archive.reply.<id> worm/tree on hit only aggregator

Bloom miss = silence. Do not “fix” that with a negative reply.

Fleet floors

https://zapier.georgelambert.org/docs/02-architecture/fleet.pdf

Service min (keepFloor)
archive-worm 3
tree-node 3
middleware-http 1
zappier-edge 1
aggregator / poller / webhook 1

Link a new host: operator console → Add machine → ssh-check → reconcile.

Adding an unplanned function

Copy verae-nats-process, pick verae.<area>.<resource>.*, add a fleet service, and if Zapier must see the result, add one HTTPS route on middleware. Do not teach Zapier NATS. https://zapier.georgelambert.org/overview/06-address-routing.pdf