feat: add Woodpecker gRPC Tailscale funnel for external Mac agent #173
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-platform!173
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "172-woodpecker-grpc-funnel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
woodpecker-grpc.tail5b443a.ts.netChanges
terraform/main.tf: Addedkubernetes_ingress_v1.woodpecker_grpc_funnelresource (31 lines)tofu plan output
Test Plan
tofu validatepassestofu plan -lock=falseshows clean 1-addtofu applycreates ingresswoodpecker-grpc.tail5b443a.ts.netresolveswoodpecker.tail5b443a.ts.netunaffectedReview Checklist
tofu fmtandtofu validateRelated
project-capacitor-mobile— discovered scope from Mac CI agent setup (#166)PR #173 Review
DOMAIN REVIEW
Tech stack: Terraform (OpenTofu) / Kubernetes / Tailscale / Woodpecker CI
The PR adds a single
kubernetes_ingress_v1.woodpecker_grpc_funnelresource to expose the Woodpecker server gRPC port (9000) via a Tailscale funnel atwoodpecker-grpc.tail5b443a.ts.net. This enables an external Mac agent to connect for iOS build jobs.Terraform style: The new resource follows the exact same pattern as the existing
woodpecker_funnel(lines 796-823) and all other funnels in the codebase (grafana, alertmanager, forgejo, harbor, minio, keycloak). Annotations, ingress class, TLS block, anddepends_onchain are all consistent. This is correct pattern reuse, not duplication.Tailscale ACL: The
nodeAttrsblock (line 82-87) grants thefunnelattribute toautogroup:memberandtag:k8s. This already covers the new ingress resource -- no ACL changes needed.Woodpecker gRPC port: The Helm chart (v3.5.1) exposes gRPC on port 9000 by default via the
woodpecker-serverservice. NoWOODPECKER_GRPC_ADDRoverride is present or needed (server defaults to0.0.0.0:9000). The backend port reference is correct.Security: Tailscale funnel provides TLS termination. gRPC auth uses the existing
WOODPECKER_AGENT_SECRET(already configured viaset_sensitiveat lines 773-783). No new secrets or credentials introduced.State safety:
Plan: 1 to add, 2 to change, 0 to destroy-- additive only, no state-breaking changes. The 2 changes are expected (Tailscale ACL refresh + operator reconciliation).BLOCKERS
None.
NITS
outputinoutputs.tf(e.g.,woodpecker_url,grafana_url,harbor_url). Consider adding awoodpecker_grpc_urloutput for discoverability:SOP COMPLIANCE
172-woodpecker-grpc-funnelmatches issue #172project-capacitor-mobilewith discovered scope from #166tofu fmtandtofu validateconfirmed passingtofu plan -lock=falseoutput includedPROCESS OBSERVATIONS
VERDICT: APPROVED