feat: add NetbirdReverseProxy CRD to deploy account-scoped BYOP clusters on Kubernetes #331
Replies: 4 comments 1 reply
|
The docs describe two cluster types: account-scoped (BYOP, token is account-scoped) and shared (platform-managed, available to all accounts on the management instance). In self-hosted deployments the management platform operator may also want to run shared proxy clusters. Does the netbirdio/reverse-proxy binary support both modes, or are shared clusters managed differently at the platform level? If the same binary supports both, the CRD should include a type: shared | account field. If not, shared cluster support would belong in the management platform deployment rather than this operator. |
|
this one is a nearly complete CRD -> https://github.com/ccbash/kubernetes-operator/blob/release/v0.11.x/config/crd/bases/netbird.io_reverseproxyservices.yaml |
|
The only thing I am debating in regards to this feature is if the operator should take responsibility to manage the actual proxy deployment. While it does make things simpler it also limits the customization options. Things get complicated as everyones specific use cases show up. |
|
I have created a Helm Chart to deploy the Reverse Proxy, until we have an operator-based solution: https://artifacthub.io/packages/helm/christianhuth/netbird-reverse-proxy |
Uh oh!
There was an error while loading. Please reload this page.
The motivation
Netbird's Bring Your Own Proxy feature lets an account run its own reverse proxy on its own infrastructure, routing traffic exclusively for that account over the Netbird mesh. The official deployment model is Docker-only. Users running Netbird on Kubernetes — especially those already using the operator for
NetworkResourceandNetworkRouter— have no declarative, operator-managed way to deploy the proxy alongside their workloads.A
NetbirdReverseProxyCRD would bring the proxy lifecycle into Kubernetes: declarative config, secret references, HA via replicas, and certificate persistence via PVCs.The suggested implementation
Add a NetbirdReverseProxy custom resource. The operator reconciles it into a Deployment (or StatefulSet when a certificate PVC is needed), a Service exposing ports 80 and 443, and the necessary Secret volume mounts.
Operator responsibilities:
netbirdio/reverse-proxycontainer with the correct environment variablesLoadBalancerService (type configurable)Acceptance criteria
kubectl applyof aNetbirdReverseProxyCR results in a running proxy that registers with the management server and appears inGET /api/reverse-proxies/clustersastype: accountmanagementURLfield defaults to the operator's ownmanagementURLwhen omittedIf you think this is a good feature for the Netbird Operator I would like to contribute with a MR.
All reactions