For easily provisioning access to Kubernetes resources using NetBird.
netbird-ingress-preview.mp4
This operator easily provides NetBird access on Kubernetes clusters, allowing users to access internal resources directly.
- (Recommended) helm version 3+
- kubectl version v1.11.3+.
- Access to a Kubernetes v1.11.3+ cluster.
- (Recommended) Cert Manager.
- Add helm repository.
helm repo add netbirdio https://netbirdio.github.io/kubernetes-operator
- (Recommended) Install cert-manager for k8s API to communicate with the NetBird operator.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.0/cert-manager.yaml
- Add NetBird API token
kubectl create namespace netbird
kubectl -n netbird create secret generic netbird-mgmt-api-key --from-literal=NB_API_KEY=$(cat ~/nb-pat.secret)
- (Recommended) Create a
values.yaml
file, checkhelm show values netbirdio/kubernetes-operator
for more info. - Install using
helm install --create-namespace -f values.yaml -n netbird netbird-operator netbirdio/kubernetes-operator
. - (Recommended) Check pod status using
kubectl get pods -n netbird
. - (Optional) Create an
exposed-nginx.yaml
file to create a Nginx service for testing. - (Optional) Apply the Nginx service:
kubectl apply -f exposed-nginx.yaml
Learn more about the values.yaml options here and Granting controller access to NetBird Management.
Important
Most operator resources are annotated with finalizers, attempting to delete the namespace will result in hanged deletion.
- (If ingress mode is enabled) Remove all instances of
netbird.io/expose
annotation on Services. - Run
helm uninstall -n netbird netbird-operator
. - Wait for all deletion jobs to finish.
We have developed and executed tests against Kubernetes v1.31, but it should work with most recent Kubernetes version.
Latest operator version: v0.1.1.
Tested against:
Distribution | Test status | Kubernetes Version |
---|---|---|
Google GKE | Pass | 1.31.5 |
AWS EKS | Pass | 1.31 |
Azure AKS | Not tested | N/A |
OpenShift | Not tested | N/A |
We would love community feedback to improve the test matrix. Please submit a PR with your test results.
Check the usage of usage.md and examples.
To be able to develop this project, you need to have the following tools installed:
- Git.
- Make.
- Go programming language.
- Docker CE.
- Kubernetes cluster (v1.16+). KIND is recommended.
- Kubebuilder.
Running unit tests
make test
Running E2E tests
kind create cluster # If not already created, you can check with `kind get clusters`
make test-e2e