fix: pause WS3-gated resources until the WireGuard server lands#14
Conversation
Every managed resource here still carries WS3 placeholders — the WireGuard Client's peer endpoint IP + keys, the TrafficRoute's VPN-client network id, and the admin DNS records' gateway VIP (10.200.0.10, which doesn't exist yet). Once provider-upjet-unifi becomes reachable (platform#2467: writable /tmp + Cloud Connector), it would try to reconcile these — failing the Client/TrafficRoute on their placeholders and, worse, CREATING local DNS records that point the admin hostnames at a dead VIP, breaking LAN access to those UIs. Hold every resource with crossplane.io/paused via commonAnnotations so the provider connects and can manage the controller, but touches nothing here until WS3 fills the real values. Unpause by removing the annotation (per-resource as each WS3 dependency lands, or all at once when WS3 is complete). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThis change modifies Changes
Related issues: None specified. Related PRs: None specified. Suggested labels: documentation, kustomize Suggested reviewers: None specified. A pause, a wait, a WireGuard yet unborn, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@kustomization.yaml`:
- Around line 17-21: The blanket pause annotation is applied through
kustomization-level commonAnnotations, so every resource added to this
kustomization will inherit crossplane.io/paused automatically. Move the pause
handling to the WS3-gated resources themselves or split the kustomization so
only the intended manifests like wireguard-vpn-client and admin-dns receive the
annotation, keeping future resources from being paused unintentionally.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: c6229b9b-e452-4181-b69b-3f5f7d424514
📒 Files selected for processing (1)
kustomization.yaml
📜 Review details
🔇 Additional comments (1)
kustomization.yaml (1)
7-18: LGTM!
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Why
Once platform#2467 makes
provider-upjet-unifireachable (writable/tmp+ Cloud Connector), it will reconcile these resources — but they all still carry WS3 placeholders. The admin DNS records would be created pointing at10.200.0.10(a VIP that doesn't exist yet), breaking LAN access to the admin UIs, and the WireGuardClient/TrafficRoutewould fail on their placeholder peer IP / keys / network-id.What
Hold every resource with
crossplane.io/paused: "true"(onecommonAnnotationsline). The provider connects and can manage the controller, but touches nothing here until WS3 lands the real values. Unpause = remove the annotation (per-resource as each WS3 dependency lands).Merge order
Merge this before/with #2467 so the resources are paused before the provider can write. (The provider is currently broken on
/tmp, so nothing is at risk until #2467 deploys.)