Any Kubernetes cluster
The platform-agnostic installation guide: what the StackRadar scanner needs from any conformant Kubernetes cluster — k3s, kubeadm, OpenShift, Rancher, or managed cloud — plus configuration, upgrades, and uninstall.
The scanner is a standard Kubernetes workload installed with Helm — it doesn't depend on any cloud provider API, CRDs, or admission webhooks. If your distribution runs upstream Kubernetes (k3s, kubeadm, OpenShift, Rancher, VMware Tanzu, DigitalOcean, Hetzner, a homelab…), this guide applies. For EKS, GKE, and AKS there are dedicated guides with platform-specific networking notes: EKS, GKE, AKS.
What the scanner needs from a cluster
Every platform difference reduces to these four things:
| Requirement | Detail |
|---|---|
A working kubectl context | With permission to create a namespace and install workloads. How you obtain credentials is the main thing that varies per platform. |
| Helm | 3.8+ for the OCI install method; older Helm 3 works with the classic repo. |
| Ability to pull the scanner image | From the public registry, or from your own registry if you mirror it (see restricted-network installs). |
Outbound HTTPS to api.stackradar.io | Port 443, the single endpoint used for SBOM uploads and heartbeats. NAT, egress proxies, and firewalls are fine as long as this path exists. |
A useful rule of thumb: if your workloads can pull public container images, the scanner will run and report. There are no privileged host requirements, node agents, or kernel modules involved.
1. Install
Create a cluster in the StackRadar dashboard and copy its cluster ID and cluster-scoped API key (see API keys & cluster scoping):
export STACKRADAR_API_KEY=<your-api-key>
export STACKRADAR_CLUSTER_ID=<your-cluster-id>Then install the scanner chart (Helm 3.8+ for the OCI method):
helm install stackradar-scanner \
oci://ghcr.io/lockdep/charts/stackradar-scanner \
--namespace stackradar --create-namespace \
--set stackradar.apiKey=$STACKRADAR_API_KEY \
--set stackradar.clusterId=$STACKRADAR_CLUSTER_ID2. Verify
kubectl get pods --namespace stackradarOnce the pod is Running, the scanner sends a heartbeat and the cluster shows as connected in the dashboard. SBOMs for running workloads follow within a few minutes. If the cluster never connects, see Troubleshooting.
Configuration
The two required values are stackradar.apiKey and stackradar.clusterId. Everything else has defaults; list the full set of configurable values with:
helm show values oci://ghcr.io/lockdep/charts/stackradar-scannerFor anything beyond the two credentials, prefer a values file over a chain of --set flags — it can live in git (minus the key) and makes upgrades reproducible:
helm upgrade --install stackradar-scanner \
oci://ghcr.io/lockdep/charts/stackradar-scanner \
--namespace stackradar --create-namespace \
--set stackradar.apiKey=$STACKRADAR_API_KEY \
--values my-values.yamlUpgrading
helm upgrade stackradar-scanner \
oci://ghcr.io/lockdep/charts/stackradar-scanner \
--namespace stackradar --reuse-valuesThe dashboard shows each cluster's reported scanner version, so you can see at a glance which clusters are behind.
Uninstalling
helm uninstall stackradar-scanner --namespace stackradar
kubectl delete namespace stackradarThen revoke the cluster's API key in the dashboard. Already-uploaded SBOMs and scan history remain until you delete the cluster there too.
Notes for common distributions
- GitOps (Argo CD / Flux) — the chart works as a normal Helm source. Supply
stackradar.apiKeyfrom a Secret-backed mechanism (e.g. a sealed or external secret) rather than committing it to the repo. - OpenShift and other policy-enforcing platforms — the scanner runs as an ordinary unprivileged workload. If your platform enforces restrictive security context or image policies, review the chart's defaults with
helm template, or browse its manifests, values, and version history on Artifact Hub — the same way you vet any third-party chart. - Single-node / edge clusters (k3s, k0s, microk8s) — no special configuration; the scanner's footprint is a single small deployment, so it's reasonable to run on constrained hardware.
- Clusters behind proxies or with filtered egress — see private registry & restricted-network installs.
What happens after install
The scanner watches for pods starting anywhere in the cluster, generates a CycloneDX SBOM per container image, and uploads it for matching against 300K+ OSV.dev advisories — no scan schedules to configure. See architecture & data flow for what runs where and exactly what data leaves the cluster.