You need a Kubernetes cluster (>1.22), and the kubectl
command-line tool must be installed and
configured to communicate with your cluster. STUNner should be compatible with any major hosted
Kubernetes service or any on-prem Kubernetes cluster; if not, please file an issue.
The simplest way to expose STUNner to clients is through Kubernetes LoadBalancer
services;
these are automatically managed by STUNner. This depends on a functional LoadBalancer integration
in your cluster (if using Minikube, try minikube tunnel
to get an idea of how this
works). STUNner automatically detects if LoadBalancer service integration is functional and falls
back to using NodePorts when it is not; however, this may require manual tweaking of the firewall
rules to route the UDP NodePort range.
To recompile STUNner, at least Go v1.17 is required. Building the container images requires Docker or Podman.
The simplest way to deploy the full STUNner distro, with the dataplane and the controller
automatically installed, is through Helm. STUNner configuration parameters are
available for customization as Helm
Values. We recommend deploying the STUNner
dataplane into a separate Kubernetes namespace and we usually name this namespace as stunner
, in
order to isolate it from the rest of the workload. The control plane operator can be deployed into
any namespace.
First, register the STUNner repository with Helm.
helm repo add stunner https://l7mp.io/stunner
helm repo update
Install the control plane:
helm install stunner-gateway-operator stunner/stunner-gateway-operator
Install the dataplane:
helm install stunner stunner/stunner --create-namespace --namespace=stunner
You can install multiple STUNner dataplanes side-by-side, provided that the corresponding
namespaces are different. For instance, to create a prod
dataplane installation for your
production workload and a dev
installation for experimentation, the below commands will install
two dataplanes, one into the pod
and another one into the dev
namespace.
helm install stunner stunner/stunner-prod --create-namespace --namespace=stunner-prod
helm install stunner stunner/stunner-dev --create-namespace --namespace=stunner-dev
Now, you can build a separate gateway hierarchy per each namespace to supply a distinct ingress gateway configuration per dataplane.
For the list of available customizations, see the STUNner-helm repository. For installing STUNner in the standalone mode, consult the documentation here.
STUNner development is coordinated in Discord, feel free to join.
Copyright 2021-2022 by its authors. Some rights reserved. See AUTHORS.
MIT License - see LICENSE for full text.