Skip to content

Install Reactor

Create an API key in the UniFi UI under Settings → Control Plane → Integrations, then:

Terminal window
kubectl create namespace reactor-system
kubectl -n reactor-system create secret generic unifi-reactor-credentials \
--from-literal=UNIFI_API_KEY=<your-api-key>
helm install reactor oci://ghcr.io/robbeverhelst/charts/reactor \
--namespace reactor-system \
--set unifi.url=https://192.168.1.1

Or without Helm, using the manifest bundle from the latest release:

Terminal window
kubectl apply -f https://github.com/robbeverhelst/unifi-reactor/releases/latest/download/install.yaml

Confirm it can see your hardware:

Terminal window
kubectl -n reactor-system logs deploy/reactor | grep 'state transition'
# INFO state transition provider=unifi key=ups from= to=online
# INFO state transition provider=unifi key=wan from= to=primary

The first observation reports every key it can see, so these lines are your inventory. For the full per-poll state, set log.level=debug.

The Automation CRD is a template in this chart rather than a file under crds/. Helm installs a chart’s crds/ directory on first install and never touches it again on upgrade, silently — so a release that changed the schema would upgrade cleanly while the cluster kept the old CRD, and the operator would start writing fields the API server rejects.

As a template it upgrades with everything else. It carries helm.sh/resource-policy: keep, so helm uninstall leaves both the CRD and every Automation stored under it in place. Removing it is a deliberate act:

Terminal window
kubectl delete crd automations.reactor.robbeverhelst.com # also deletes every Automation