Can I Use Tetragon without Cilium? Yes!
eBPF-based enforcement, visibility, and forensics for Kubernetes regardless of your CNI
One of the common questions I see across social media when users learn of the capabilities of Tetragon is “Can I Use Tetragon without Cilium?”
The answer is Yes! You can use Tetragon regardless of the Container Network Interface (CNI) implemented. Tetragon provides eBPF-based enforcement, visibility, and forensics for Kubernetes regardless of your CNI.
In this blog post, I’m going to walk you through an example using a cluster with Calico Open-Source configured, and Tetragon installed to dive into process events.
First, for those of you who haven’t dived into the world of eBPF powered observability and security, let’s explain Tetragon.
What is Tetragon?
Tetragon is an Open-Source eBPF based Security Observability and Runtime enforcement platform, which was donated by Isovalent to the CNCF in 2022. Isovalent also provides an extended enterprise version of Tetragon.
Tetragon provides deep visibility without requiring you to change your applications and workloads, due to its smart in-kernel filtering and aggregation logic, built directly into the eBPF-based Kernel-Level collector.
Tetragon detects and is able to react to security-significant events, such as;
- Process execution events
- System call activity
- I/O activity including network & file access
When installed into a Kubernetes environment, Tetragon is Kubernetes-aware. This means that Tetragon can match the Kubernetes metadata, such as namespaces, pods, labels and beyond, to the security and process event information collected against workloads running in the cluster.
You can read a deep dive about Tetragon in our earlier blog post, or dive into the official Tetragon docs.
Getting Started and Installing Tetragon
For this walkthrough, we are going to follow the Tetragon Kubernetes getting-started guide, and then look at some more advanced use-cases. I have also recorded the below video which you can follow along with, as well as going through this blog post.
My environment is a Kind cluster setup with the below configuration, and Calico Open-Source installed without any modifications. Which means you will be able to follow along with this tutorial from your own local machine.
We can validate the configuration below:
To install Tetragon, we will do this using the available Helm Chart, the below commands configure the helm chart repository and install Tetragon, and wait for it to become ready:
This will produce an output like the following example:
To generate some security observability events in our environment, I am going to deploy the following Cilium Demo application, if you have used any of the Isovalent Hands-on-Labs to explore Cilium and Hubble in the past, you may be familiar with this demo application:
We can validate that all components of the demo application are configured, and pods are running with the following command:
Now, to install the tetra CLI, head over to the official documentation, as it lists the installation steps for each platform.
Below are the steps for installation to Linux amd64 architecture.
Viewing process events from our workloads
Once we have the CLI installed, let’s generate some events in the xwing pod, using the below command we exec into the xwing pod to run some commands:
We can view the process events by running the following command, I recommend doing this in a separate terminal window, so that you can leave this command running to capture the output: