netbirdio / netbird

Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
https://netbird.io
BSD 3-Clause "New" or "Revised" License
10.5k stars 471 forks source link

Netbird server Helm chart #853

Open MohammedNoureldin opened 1 year ago

MohammedNoureldin commented 1 year ago

Hi,

I have created this issue to track the status of creating a Helm chart to install a self-hosted server easily. I have just finished preparing all Kubernetes required resources and got it working out of the box.

I just still need to replace the hard-coded fields with Helm vars.

Here I am using no "magic script" to create my configuration, because it was the most tedious part for me to get everything working without the script, because it reduced the readability and my understanding to what is going on and how is every part being configured. So I think these K8s resources can also help anybody to understand how the components can be configured manually.

jayvardhan2111 commented 1 year ago

You can assign me this task. Also, Please help me in finding Kubernetes manifest files so that I can start working on packaging it using Helm.

M0NsTeRRR commented 10 months ago

Hello @MohammedNoureldin @jayvardhan2111 Any news on this feature request ? Regards,

M0NsTeRRR commented 10 months ago

As I see jaconi company have shared helm chart for client and server https://artifacthub.io/packages/helm/jaconi/netbird

https://github.com/jaconi-io/helm-charts/tree/main

dextercai commented 9 months ago

As I see jaconi company have shared helm chart for client and server https://artifacthub.io/packages/helm/jaconi/netbird

https://github.com/jaconi-io/helm-charts/tree/main

HelmCharts from jaconi's company seems a bit complicated, I think there can be a simplified version for easier understanding.

M0NsTeRRR commented 9 months ago

As I see jaconi company have shared helm chart for client and server https://artifacthub.io/packages/helm/jaconi/netbird

https://github.com/jaconi-io/helm-charts/tree/main

HelmCharts from jaconi's company seems a bit complicated, I think there can be a simplified version for easier understanding.

It's a classic helm chart with a lot of configurable features (all ? I didn't look much into in for now) with default values also. If we have a simple helm chart if your requirement change and need a feature that's not managed you have to migrate to another helm chart. Documentation and default values (when possible) will helps to understand.

marcportabellaclotet-mt commented 3 months ago

I have written a generic helm chart, which is not as coupled as the one from jaconi. Right now works quite well, and is quite configurable. The difficult part, is how to manage the management configuration file, and populate it with configs and secrets. Should I create a PR on this repo, with a proposal? Spoiler alert:

dfry commented 2 months ago

@marcportabellaclotet-mt can you share a preview of your chart with the proposal? thanks

marcportabellaclotet-mt commented 2 months ago

Here is a basic version of the Helm chart that I am using.

It needs documentation, which could be added if the proposal is accepted. The aim is to support any configuration since it's impractical to template all possible configurations based on the management.json file.

To render the configuration, we will need to run the configure.sh from Netbird, include it as values.configuration in the netbird chart, and replace sensitive data with vals references. Note that netbird-dashboard also needs to update some env vars.

Maybe I could merge both charts for simplicity.

I provide an example using Authentik as an IdP and Kubernetes secrets to manage sensitive data.

For deploying the TURN server, I have successfully done so in Kubernetes using the Stunner Gateway Operator.