DigitalOcean DOKS
SBOM generation and vulnerability scanning on DigitalOcean Kubernetes (DOKS): connect kubectl with doctl, install the Helm chart, and handle DOCR credentials.
DOKS is a managed, conformant cluster with public egress by default, so the scanner installs with no networking changes. The one thing to know is how DigitalOcean Container Registry (DOCR) credentials reach pods, because the scanner pulls images itself.
Prerequisites
- A DOKS cluster and doctl authenticated (doctl auth init).
- Helm 3.8+ and kubectl.
- A free StackRadar account.
Point kubectl at your DigitalOcean Kubernetes (DOKS) cluster
bashdoctl kubernetes cluster kubeconfig save <cluster-name> kubectl get nodesInstall the scanner
Create a cluster in the StackRadar dashboard and copy its cluster ID and cluster-scoped API key (see API keys & cluster scoping):
bashexport 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). The command pins the current release,
0.3.0— published versions are immutable, so the install is reproducible.bashhelm install stackradar-scanner \ oci://ghcr.io/lockdep/charts/stackradar-scanner \ --version 0.3.0 \ --namespace stackradar --create-namespace \ --set stackradar.apiKey=$STACKRADAR_API_KEY \ --set stackradar.clusterId=$STACKRADAR_CLUSTER_IDVerify
bashkubectl 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.
DigitalOcean notes
- DOCR integration: when you link a registry to a DOKS cluster in the control panel, DigitalOcean creates a registry-<name> pull Secret in the default namespace and adds it to that namespace’s default ServiceAccount. Pods in other namespaces reference it explicitly or through their own ServiceAccount. The scanner reuses imagePullSecrets listed on the pod; for images pulled via a ServiceAccount-attached Secret, give the scanner a dockerConfigSecret with a DOCR read token.
- Node pools: DOKS recycles nodes on upgrades and autoscaling. Pods move, image digests do not, so the scanner’s inventory follows the workloads and no rescan happens for an unchanged image.
- Egress: DOKS nodes have public IPs; no NAT or proxy configuration is needed to reach api.stackradar.io.
Images from a private registry? The scanner pulls each image itself and reuses the imagePullSecrets your pods declare. If your nodes authenticate some other way, give the scanner a credential via dockerConfigSecret — see authenticating to a private registry. No public egress at all? Same page: restricted-network installs.
What happens after install
The scanner reports the cluster's workload inventory first — namespaces, workloads, containers, plus the Helm releases and GitOps applications that deliver them — so the dashboard shows every discovered workload and its scan coverage right away. Its first pass covers the whole cluster, not just new deploys: the initial sync lists every pod already running, and each container image is queued for scanning immediately. The scanner generates a CycloneDX SBOM per image and uploads it for matching against 900K+ OSV.dev advisories, then keeps coverage current as pods start, restart, or change — no scan schedules to configure. See architecture & data flow for what runs where and exactly what data leaves the cluster.
Next steps
- Architecture & data flowHow the StackRadar scanner works: what runs in your cluster, exactly what data leaves it, how SBOMs are matched to vulnerabilities, and where data is stored.
- TroubleshootingFixes for common StackRadar scanner issues: 401/403 API errors, a cluster that never appears in the dashboard, Helm install failures, and missing SBOMs.