This repository contains the Helm Chart files for the wg-access-server project.
To install the chart with the release name wireguard:
$ helm install wireguard --repo https://freifunkMUC.github.io/wg-access-server-chart/ wg-access-serverThe command deploys wg-access-server on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
A wireguard private key needs to be set in order for the pod to start successfully. Use wg genkey and append --set wireguard.config.privateKey="<wg-private-key>" to the command above.
Per default persistence is disabled and devices will not persist. To enable persistence, set persistence.enabled.
Because IPv6 on Kubernetes is disabled by default in most clusters and can't be enabled on a per-pod basis, the default values.yaml disables it for the VPN as well. If you have a cluster with working IPv6, set config: {} in your values.yaml or specify a custom VPN-internal prefix under config.vpn.cidrv6.
If no admin password is set, the Chart generates a random one. You can retrieve it using kubectl get secret ... as prompted by helm after installing the Chart.
To uninstall/delete the wireguard deployment:
$ helm delete wireguard
The command removes all the Kubernetes components associated with the chart and deletes the release.
# wg-access-server config
web:
config:
adminUsername: "<Username for the admin user>"
adminPassword: "<Password for the admin user>",
service:
type: 'LoadBalancer',
loadBalancerIP: "IP of the admin panel",
wireguard:
config:
privateKey: "<Private Key>"
service:
type: ClusterIP
loadBalancerIP: "IP of the WireGuard service"
persistence:
enabled: true
size: "100Mi"
accessModes:
- ReadWriteOnce
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "nginx",
cert-manager.io/cluster-issuer: "letsencrypt-prod"
hosts:
- vpn.example.com
tls:
- hosts:
- vpn.example.com
secretName: `wg-access-server-tls`
| Key | Type | Default | Description |
|---|---|---|---|
| config | object | {} |
inline wg-access-server config (config.yaml) |
| web.config.adminUsername | string | "admin" |
|
| web.config.adminPassword | string | "" |
If omitted a random password will be generated and stored in the secret |
| web.service.annotations | object | {} |
|
| web.service.externalTrafficPolicy | string | "" |
|
| web.service.type | string | "ClusterIP" |
|
| web.service.loadBalancerIP | string | "" |
|
| wireguard.config.privateKey | string | "" |
REQUIRED - A wireguard private key. You can generate one using $ wg genkey |
| wireguard.service.annotations | object | {} |
|
| wireguard.service.type | string | "ClusterIP" |
|
| wireguard.service.sessionAffinity | string | "ClientIP" |
|
| wireguard.service.externalTrafficPolicy | string | "" |
|
| wireguard.service.ipFamilyPolicy | string | "SingleStack" |
|
| wireguard.service.loadBalancerIP | string | "" |
|
| wireguard.service.port | int | 51820 |
|
| wireguard.service.nodePort | int | "" |
Use available port from range 30000-32768 |
| persistence.enabled | bool | false |
|
| persistence.existingClaim | string | "" |
Use existing PVC claim for persistence instead |
| persistence.annotations | object | {} |
|
| persistence.accessModes[0] | string | "ReadWriteOnce" |
|
| persistence.storageClass | string | "" |
|
| persistence.size | string | "100Mi" |
|
| ingress.enabled | bool | false |
|
| ingress.annotations | object | {} |
|
| ingress.ingressClassName | string | "" |
|
| ingress.hosts | list | [] |
|
| ingress.tls | list | [] |
|
| nameOverride | string | "" |
|
| fullnameOverride | string | "" |
|
| hostNetwork | bool | false |
Run the application pod in the host network of the node |
| imagePullSecrets | list | [] |
|
| image.repository | string | "ghcr.io/freifunkmuc/wg-access-server" |
|
| image.tag | string | "" |
|
| image.pullPolicy | string | "IfNotPresent" |
|
| replicas | int | 1 |
|
| strategy.type | string | "" |
Recreate if persistence.enabled true or RollingUpdate if false |
| resources | object | {} |
pod cpu/memory resource requests and limits |
| securityContext | object | {"capabilities":{"add": ["NET_ADMIN"]}} |
Set securityContext for the application pod |
| nodeSelector | object | {} |
|
| tolerations | list | [] |
|
| affinity | object | {} |