Skip to content

Install and configure

Snellius ships as a container image, ghcr.io/duncandoyle/snellius, and a Helm chart, oci://ghcr.io/duncandoyle/charts/snellius. Each release publishes both with the same version.

Terminal window
helm install ui oci://ghcr.io/duncandoyle/charts/snellius \
-n snellius --create-namespace

The chart installs a Deployment, a ClusterIP Service, a ServiceAccount, a read-only ClusterRole and its binding. The configuration reference lists the values you are most likely to change.

Terminal window
helm upgrade ui oci://ghcr.io/duncandoyle/charts/snellius -n snellius --reuse-values

Read the upgrade notes first. They list every change in behaviour, release by release.

An install is a kgateway controller Deployment with the labels kgateway=kgateway and app.kubernetes.io/component=controller. The kgateway Helm chart sets both. Snellius shows every install it finds, so one Snellius can watch several kgateway installs in the same cluster.

To show only one, pin it:

Terminal window
helm upgrade ui oci://ghcr.io/duncandoyle/charts/snellius -n snellius \
--reuse-values --set install.pin=kgateway-system/kgateway

install.pin takes the controller’s namespace/name or an install ID.

Snellius honours each controller’s discoveryNamespaceSelectors. It only counts resources in namespaces the controller watches, and the install page shows the scope as “N of M namespaces”.

By default the chart creates a ClusterIP Service only, and you reach the UI with a port-forward. To serve it through a Gateway instead, first read the security and trust model, then put authentication in front of the route, for example a kgateway TrafficPolicy with OIDC or external auth. Then set:

httpRoute:
enabled: true
parentRefs:
- name: edge
namespace: infra
hostnames:
- snellius.example.com

In the cluster, Snellius scrapes the controller Pods on port 9092 and reads Envoy stats from each proxy Pod on port 9091. If a NetworkPolicy blocks either, the UI reports that signal as “not available” instead of showing it green. See Compatibility for what each kgateway version reports.

You see Check
“No kgateway install found” The controller Deployment has both labels above, and the UI’s ServiceAccount can list Deployments.
A check reads “not available” The finding page says why: a chart toggle is off, RBAC denies the read, or the network blocks the port.
Counts lower than you expect The controller’s discoveryNamespaceSelectors. Snellius counts only the namespaces the controller watches.