Skip to content

Run bpfman From Release Image

This section describes how to deploy bpfman from a given release. See Releases for the set of bpfman releases.

Jump to the Setup and Building bpfman section for help building from the latest code or building from a release branch.

Tutorial contains more details on the different modes to run bpfman in on the host and how to test. Use Local Host or Systemd Service below for deploying released version of bpfman and then use Tutorial for further information on how to test and interact with bpfman.

Deploying the bpfman-operator contains more details on deploying bpfman in a Kubernetes deployment and Deploying Example eBPF Programs On Kubernetes contains more details on interacting with bpfman running in a Kubernetes deployment. Use Deploying Release Version of the bpfman-operator below for deploying released version of bpfman in Kubernetes and then use the links above for further information on how to test and interact with bpfman.

Local Host

To run bpfman in the foreground using sudo, download the release binary tar files and unpack them.

export BPFMAN_REL=0.3.1
mkdir -p $HOME/src/bpfman-${BPFMAN_REL}/; cd $HOME/src/bpfman-${BPFMAN_REL}/
wget https://github.com/bpfman/bpfman/releases/download/v${BPFMAN_REL}/bpfman-linux-x86_64.tar.gz
tar -xzvf bpfman-linux-x86_64.tar.gz; rm bpfman-linux-x86_64.tar.gz

$ tree
.
├── bpfman-linux-x86_64.tar.gz
└── target
    └── x86_64-unknown-linux-musl
        └── release
            └── bpfman

To deploy bpfman:

sudo RUST_LOG=info ./target/x86_64-unknown-linux-musl/release/bpfman 
[2023-10-13T15:53:25Z INFO  bpfman] Log using env_logger
[2023-10-13T15:53:25Z INFO  bpfman] Has CAP_BPF: true
[2023-10-13T15:53:25Z INFO  bpfman] Has CAP_SYS_ADMIN: true
:

To use the CLI:

sudo ./target/x86_64-unknown-linux-musl/release/bpfman list
 Program ID  Name       Type  Load Time                

Continue in Tutorial if desired.

Systemd Service

To run bpfman as a systemd service, the binaries will be placed in a well known location (/usr/sbin/.) and a service configuration file will be added (/usr/lib/systemd/system/bpfman.service). There is a script that is used to install the service properly, so the source code needs to be downloaded to retrieve the script. Download and unpack the source code, then download and unpack the binaries.

export BPFMAN_REL=0.3.1
mkdir -p $HOME/src/; cd $HOME/src/
wget https://github.com/bpfman/bpfman/archive/refs/tags/v${BPFMAN_REL}.tar.gz
tar -xzvf v${BPFMAN_REL}.tar.gz; rm v${BPFMAN_REL}.tar.gz
cd bpfman-${BPFMAN_REL}

wget https://github.com/bpfman/bpfman/releases/download/v${BPFMAN_REL}/bpfman-linux-x86_64.tar.gz
tar -xzvf bpfman-linux-x86_64.tar.gz; rm bpfman-linux-x86_64.tar.gz

Run the following command to copy the bpfman binaries to /usr/sbin/ and copy a default bpfman.service file to /usr/lib/systemd/system/. This option will also start the systemd service bpfman.service by default.

sudo ./scripts/setup.sh install

NOTE: If running a release older than v0.3.1, the install script is not coded to copy binaries from the release directory, so the binaries will need to be manually copied.

Continue in Tutorial if desired.

Deploying Release Version of the bpfman-operator

The quickest solution for running bpfman in a Kubernetes deployment is to run a Kubernetes KIND Cluster:

kind create cluster --name=test-bpfman

Next, deploy the bpfman CRDs:

export BPFMAN_REL=0.3.1
kubectl apply -f  https://github.com/bpfman/bpfman/releases/download/v${BPFMAN_REL}/bpfman-crds-install-v${BPFMAN_REL}.yaml

Next, deploy the bpfman-operator, which will also deploy the bpfman-daemon, which contains bpfman and bpfman-agent:

kubectl apply -f https://github.com/bpfman/bpfman/releases/download/v${BPFMAN_REL}/bpfman-operator-install-v${BPFMAN_REL}.yaml

Finally, deploy an example eBPF program.

kubectl apply -f https://github.com/bpfman/bpfman/releases/download/v${BPFMAN_REL}/go-xdp-counter-install-v${BPFMAN_REL}.yaml

There are other example programs in the Releases page.

Continue in Deploying the bpfman-operator or Deploying Example eBPF Programs On Kubernetes if desired.