Repository navigation
Conversation
…NS moves Adds relay_gce_passthrough_edge_cells: a VM next to the cell holds a static IP and runs Envoy, which terminates TLS for the cell's own hostname and forwards over the VPC to the cell VM, so no Google proxy sits in the path. lego issues and renews a Let's Encrypt certificate by DNS-01 into a zone-scoped Cloud DNS zone that Cloudflare delegates; a discovery loop follows the cell VM by label. The cell, its template and its MIG are untouched and stay behind the shared load balancer; the edge carries traffic only once Cloudflare points the cell's exact name at it. Production lists c35 (the Asia internal_error experiment); staging lists c4 for the proof. Claude-Session: f2fe8cb5-4467-4a25-8aab-98598b70791f
… zone before the edge Claude-Session: f2fe8cb5-4467-4a25-8aab-98598b70791f
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to
|
…ing proof stopped Claude-Session: f2fe8cb5-4467-4a25-8aab-98598b70791f
|
Closing because this public-repository Terraform experiment is superseded by the deployment ownership move in #31792 ( I read the complete nine-file patch, body, runbook, and discussion. All nine target paths—the production/staging Terraform root, edge VM/firewall/DNS/monitoring resources, Envoy and startup templates, fixture inventory, and runbook—are absent from current main ( The proposed runbook explicitly says “Status: shelved (2026-10-16). Nothing here is applied,” notes that staging resources were destroyed, and distinguishes its throwaway-CA proof from unproven public-certificate/DNS cutover. This closure does not assert that c35 was switched, that the Asia proxy-drop problem is solved, or that any corresponding private deployment change landed. Any revival belongs in the current private deployment owner rather than resurrecting the removed public Terraform root. |
ELI5
Some Asia desktops lose their relay connection a few times a day, all in the same second. Google's load balancer, which sits in front of every relay cell, ends those connections; it happens only for the Asia cells. This PR builds a second front door for one Asia cell, c35, that we run ourselves, with no Google proxy in it. Nothing uses the new door until we change one DNS record, and deleting that record is the undo. Then we can see whether c35 stops dropping when the other Asia cells drop.
What Changed
c35.relay.onorca.devresolves, through the*.relay.onorca.devwildcard, to Google's global load balancer.statusDetails=internal_error).orca-cloud-relay-gce-edge-c35, stands next to c35 with a static IP, and serves c35's hostname with its own certificate.c35A record in Cloudflare): c35's desktops connect to that VM. Envoy terminates TLS there and forwards over the VPC to the same c35 VM. The cell stays behind the Google load balancer the whole time, so both paths serve during and after the switch.relay-gce-passthrough-edge.tf, keyed byrelay_gce_passthrough_edge_cells). Three containers run on a COS VM:X-Forwarded-Fortoclient, edge-IP, the shape the cell's per-source admission reads.cloud/docs/relay-passthrough-edge.md.Why
Linked Issue
N/A (maintainer; internal Asia relay drop investigation).
Visual Proof
N/A. This is infrastructure with no UI; the evidence is under Testing.
Testing
Read-only production plan (
-lock=false, targeted as in the runbook):15 to add, 0 to change, 0 to destroy, with no cell, URL map or address resource in it.Staging, edge in front of c4. Applied with targeted staging applies only; staging-only changes.
/healththrough the edge returns 200, from the cell. The LB path stays 200 at the same time.ws, SNI c4, pinned to the edge IP):/v1/connect/<id>upgrades with 101;relay-helloand closes 4401, identical to the LB path;/v1/host/controlwithout auth returns 401 on both paths;X-Forwarded-Forandx-envoy-*header were dropped. The upstream saw exactlyclient, edge-IP. The cell's per-source limiter returned 429 to a burst from one client through the edge.relay-staging-acme.onorca.dev, CNAME for_acme-challenge.c4.relay-staging.onorca.dev). The renewer currently logs that the CNAME is missing and places no order.Script tests.
node --test dev/scripts/*.test.mjs: 1014 pass, 4 fail. The failures do not involve this change: the relay contract package is unbuilt, two suites need the tsx runner, and an argv test fails on a workflow this PR does not touch. The root-partition fixture includes the new families.terraform validatepasses.I manually tested these changes locally
Automated tests added/updated, or explained why not below
The behaviour is Terraform plus shell. It is covered by the staging proof above and the root-partition test, not by unit tests.
AI Disclosure
Review
Do not apply to production from this PR. The production steps are a targeted apply, then two inert Cloudflare records, then a probe, then the A record. They are in the runbook, and each needs Jinwoo's go.
Agent skill upstream boundary
Notes
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)