Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Add eBPF based traffic interception method. We have added eBPF interception functionality to osm fork osm-edge and contributing those changes to upstream. This PR comes with complete code changes along with eBPF code, and provide an installation flag to end user making to enable this functionality. Traffic interception mode settings can set during installation via setting osm.trafficInterceptionMode to any of:
iptables - default settings
ebpf - Use eBPF as an interception method
none - Disable interception
Testing done:
PR comes with unit tests, but for a complete E2E working demo, one can follow below steps to install and test this functionality.
Prerequisites:
Working Kubernetes cluster. This requires k8s cluster running on VM, docker based clusters (like Kind, K3d) won't work. If you don't have working cluster ready, follow Quick Start of blog post .
Assuming you are testing this on debian based system, if you are on different OS, make sure to set arch var accordingly.
Description:
Add eBPF based traffic interception method. We have added eBPF interception functionality to
osm
fork osm-edge and contributing those changes to upstream. This PR comes with complete code changes along with eBPF code, and provide an installation flag to end user making to enable this functionality. Traffic interception mode settings can set during installation via settingosm.trafficInterceptionMode
to any of:iptables
- default settingsebpf
- Use eBPF as an interception methodnone
- Disable interceptionTesting done:
PR comes with unit tests, but for a complete E2E working demo, one can follow below steps to install and test this functionality.
Prerequisites:
Assuming you are testing this on debian based system, if you are on different OS, make sure to set
arch
var accordingly.Please answer the following questions with yes/no.
Does this change contain code from or inspired by another project? Yes
Is this a breaking change? No
Has documentation corresponding to this change been updated in the osm-docs repo (if applicable)? N/A