Expose Felix webhooks over Tailscale#2434
Conversation
Add a dedicated Felix webhook service on the Hermes webhook port and expose it through the Tailscale operator only. Allow the Kubernetes Tailscale operator to use tag:felix so the webhook ingress can be provisioned with its own MagicDNS hostname.
There was a problem hiding this comment.
Pull request overview
This PR exposes Felix’s webhook adapter via the Tailscale ingress class (intended to be reachable as felix-webhook.cow-banjo.ts.net) and updates the Felix deployment to publish the webhook port. It also adds the required Tailscale ACL tag ownership so the Kubernetes operator can assign the new tag:felix.
Changes:
- Add
tag:felixto Tailscale ACLtagOwnersto allowtag:k8s-operatorto assign it. - Expose a new
felix-webhookService on port8644and add a Tailscale Ingress targeting it. - Update the Felix deployment to expose container port
8644and bumphermes-agenttov2026.6.19.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| opentofu/tailscale.tf | Adds tag:felix ownership so the k8s operator can tag the new Tailscale-exposed endpoint. |
| kubernetes/felix/deployment.yaml | Bumps Hermes agent image and exposes the new webhook port on the pod. |
| kubernetes/felix/service-webhook.yaml | Introduces a dedicated ClusterIP service exposing port 8644 to the pod’s named webhook port. |
| kubernetes/felix/tailscale-ingress-webhook.yaml | Adds a Tailscale Ingress routing /webhooks to the felix-webhook service. |
| kubernetes/felix/kustomization.yaml | Wires the new Service and Tailscale Ingress into the Felix kustomization resources list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
WalkthroughThe Felix hermes container image is updated, the pod template adds a webhook port, and new Kubernetes and Tailscale manifests expose ChangesFelix webhook exposure
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4c04feed22
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - name: webhook | ||
| containerPort: 8644 |
There was a problem hiding this comment.
Enable the webhook adapter before exposing it
In environments recreated from this repo (for example a fresh Felix PVC with no manual ~/.hermes/config.yaml), this only publishes port 8644; Hermes documents WEBHOOK_ENABLED as defaulting to false (https://hermes-agent.nousresearch.com/docs/user-guide/messaging/webhooks#environment-variables), and the Deployment/ExternalSecret still only provide API/Slack settings. The new Service/Ingress will therefore forward Tailscale requests to a port where the webhook server was never started, so /webhooks/... will fail until the webhook enable/secret config is supplied to the pod.
Useful? React with 👍 / 👎.
Includes the Hermes agent upgrade from the Renovate branch and exposes the enabled Felix webhook adapter over Tailscale only.
Adds a dedicated felix-webhook service on port 8644, a Tailscale ingress at felix-webhook.cow-banjo.ts.net, and the Tailscale ACL tag owner needed for tag:felix.