Migrate from NeuVector to Falco
What you’ll accomplish
Section titled “What you’ll accomplish”You’ll upgrade your UDS Core deployment from the legacy NeuVector runtime security provider to Falco, removing NeuVector cleanly as part of the upgrade.
Prerequisites
Section titled “Prerequisites”- UDS Core deployed (upgrading from a version that included NeuVector)
- UDS CLI installed
- Access to a Kubernetes cluster
Before you begin
Section titled “Before you begin”UDS Core now includes Falco by default in the core-runtime-security package layer and no longer manages NeuVector. This guide covers the recommended upgrade path: deploy Falco and remove NeuVector in a single operation.
-
Enable the NeuVector cleanup gate
In your
uds-config.yaml, set the cleanup variable:uds-config.yaml variables:core:CLEANUP_LEGACY_NEUVECTOR: "true" -
Create and deploy your bundle
Terminal window uds create <path-to-bundle-dir>uds deploy uds-bundle-<name>-<arch>-<version>.tar.zstThe runtime-security layer will deploy Falco and clean up all legacy NeuVector resources.
Verification
Section titled “Verification”Confirm the expected state after migration:
Check Falco is running (Falco only or Falco + NeuVector scenarios):
uds zarf tools kubectl get pods -n falcoCheck NeuVector namespace was removed (Falco only scenario):
# Should return "not found" if cleanup succeededuds zarf tools kubectl get ns neuvectorCheck NeuVector CRDs were removed (Falco only scenario):
# Should return empty or no matchesuds zarf tools kubectl get crds | grep neuvectorTroubleshooting
Section titled “Troubleshooting”Problem: NeuVector resources remain after cleanup
Section titled “Problem: NeuVector resources remain after cleanup”Symptoms: The neuvector namespace or CRDs still exist after deploying with CLEANUP_LEGACY_NEUVECTOR: "true".
Solution: Verify the variable was set correctly — it must be the string "true" (quoted), not a boolean. Check your uds-config.yaml:
variables: core: CLEANUP_LEGACY_NEUVECTOR: "true" # Must be quoted stringRedeploy the bundle after confirming the variable is set correctly.
Problem: NeuVector CRDs not removed but namespace is gone
Section titled “Problem: NeuVector CRDs not removed but namespace is gone”Symptoms: The neuvector namespace was deleted but NeuVector CRDs still appear in the cluster.
Solution: CRD cleanup targets CRDs whose names contain neuvector. If the CRDs were renamed or are from a different NeuVector installation, they may not match. Remove them manually:
uds zarf tools kubectl get crds | grep neuvector | awk '{print $1}' | xargs uds zarf tools kubectl delete crdRelated Documentation
Section titled “Related Documentation”- Standalone NeuVector — deploy and manage NeuVector independently
- Runtime security concepts — background on how Falco and runtime threat detection work in UDS Core
Next steps
Section titled “Next steps”These guides and concepts may be useful to explore next: