Skip to content

Migrate from NeuVector to Falco

You’ll upgrade your UDS Core deployment from the legacy NeuVector runtime security provider to Falco, removing NeuVector cleanly as part of the upgrade.

  • UDS Core deployed (upgrading from a version that included NeuVector)
  • UDS CLI installed
  • Access to a Kubernetes cluster

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.

  1. Enable the NeuVector cleanup gate

    In your uds-config.yaml, set the cleanup variable:

    uds-config.yaml
    variables:
    core:
    CLEANUP_LEGACY_NEUVECTOR: "true"
  2. Create and deploy your bundle

    Terminal window
    uds create <path-to-bundle-dir>
    uds deploy uds-bundle-<name>-<arch>-<version>.tar.zst

    The runtime-security layer will deploy Falco and clean up all legacy NeuVector resources.

Confirm the expected state after migration:

Check Falco is running (Falco only or Falco + NeuVector scenarios):

Terminal window
uds zarf tools kubectl get pods -n falco

Check NeuVector namespace was removed (Falco only scenario):

Terminal window
# Should return "not found" if cleanup succeeded
uds zarf tools kubectl get ns neuvector

Check NeuVector CRDs were removed (Falco only scenario):

Terminal window
# Should return empty or no matches
uds zarf tools kubectl get crds | grep neuvector

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 string

Redeploy 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:

Terminal window
uds zarf tools kubectl get crds | grep neuvector | awk '{print $1}' | xargs uds zarf tools kubectl delete crd

These guides and concepts may be useful to explore next: