Skip to content

Quick Start

This section describes how to deploy bpfman quickly from pre-built release artifacts. Users can either deploy it locally via provided RPMs or in a kubernetes cluster via the provided container images and install yamls. See Releases for the complete set of bpfman releases.

Deploy Released RPM from COPR Locally

This section describes how to install an RPM built automatically by the Packit Service. The Packit Service builds RPMs for each release.

To install an RPM generated by the Packit Service, the following packages need to be installed:

dnf based OS:

sudo dnf install -y dnf-plugins-core

Additionally the bpfman copr repo needs to be enabled:

sudo dnf copr enable @ebpf-sig/bpfman

To see information about the latest released version of bpfman simply run

sudo dnf info bpfman

Last metadata expiration check: 0:00:31 ago on Thu 02 May 2024 02:34:05 PM EDT.
Available Packages
Name         : bpfman
Version      : 0.4.1~rc4
Release      : 1.20240501170848095747.main.0.64edab6a.fc38
Architecture : x86_64
Size         : 10 M
Source       : bpfman-0.4.1~rc4-1.20240501170848095747.main.0.64edab6a.fc38.src.rpm
Repository   : copr:copr.fedorainfracloud.org:group_ebpf-sig:bpfman-next
Summary      : An eBPF program manager
URL          : https://bpfman.io
License      : Apache-2.0 AND Unicode-DFS-2016 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
Description  : An eBPF Program Manager.

Next install, either the latest version with:

sudo dnf install bpfman 

Or install an older version with:

sudo dnf install bpfman-<RELEASE_VERSION> 

bpfman is now installed but not running. To start the bpfman-rpc server process:

sudo systemctl daemon-reload
sudo systemctl enable bpfman.socket
sudo systemctl start bpfman.socket

Finally you run one of the local example applications:

go run -exec sudo ./examples/go-tracepoint-counter/main.go -image quay.io/bpfman-bytecode/go-tracepoint-counter
2024/05/02 14:58:10 Using Input: Interface= Priority=0 Source=quay.io/bpfman-bytecode/go-tracepoint-counter
2024/05/02 14:58:13 Program registered with id 18569
2024/05/02 14:58:14 SIGUSR1 signal count: 8
2024/05/02 14:58:15 SIGUSR1 signal count: 9
2024/05/02 14:58:16 SIGUSR1 signal count: 10

Deploy Released container images on Kubernetes

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

kind create cluster --name=test-bpfman

Next, deploy the bpfman CRDs:

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

Next, deploy the bpfman-operator, which will also deploy the bpfman-daemon, which contains bpfman-rpc, bpfman Library 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 program install yamls in the artifacts for each Release payload.

Use the following command to teardown the cluster:

kind delete cluster -n test-bpfman