Service mesh and eBPF security services in cluster networks
Master thesis
Permanent lenke
https://hdl.handle.net/11250/3163041Utgivelsesdato
2024Metadata
Vis full innførselSamlinger
Sammendrag
Bruken av Kubernetes for å distribuere "containerized" applikasjoner har økt kraftig. Samtidig er er det et økende behov for robuste sikkerhetstiltak og løsninger som identifiserer sårbarheter og forhindrer at de blir utnyttet. En del av sikkerheten i Kubernetes er koblet til nettverket som har ansvar for all kommunikasjon mellom applikasjonene og maskinene i clusteret. eBPF og service mesh er to nye løsninger som nylig har blitt populære. eBPF er et privilegert instruksjonssett som gjør det mulig for utviklere å skrive programmer som kan kjøres direkte i operativsystemets kjerne. På den andre siden er service mesh en cluster topologi som muliggjør kommunikasjon mellom tjenester ved å rute kommunikasjon gjennom en proxy basert applikasjon.
Denne oppgaven har studert implikasjonene av å bruke service meshes og eBPF-programmer i Kubernetes. Først ble det utført ytelsestester på et utvalg av service meshes og eBPF-programmer for å måle forsinkelser og ressursbruk. Denne delen inkluderte flere scenarier som simulerte virkelighetsnær kommunikasjon mellom containere i clusteret. For å evaluere eBPF i Kubernetes, som bare har et begrenset antall applikasjoner, utviklet jeg en original tilnærming som etterligner et utvalg av service mesh funksjoner. Deretter, implementerted jeg den som en Golang eBPF plugin tilgjenglig på GitHub. Etter å ha utført ytelsestestene, viser de observerte målingene at under belastende forhold (200-700 request per second) hadde service meshene opptil 3 ms mer forsinkelse, mens det egenutviklede eBPF artifakten hadde nesten ingen ekstra forsinkelse. Likeså, i forhold til CPU bruk, brukte service meshene opptil en ekstra CPU kjerne under ytelsestestene. Derimot, i forhold til ressursforbruk, var resultatene mer jevne, bare Istio (en av testsubjektene) brukte betydelig mer minne og CPU-tid.
Den andre delen av denne oppgave ble de to teknologiene (eBPF og service mesh) mer undersøkt for å se hvilke sikkerhetsrelaterte funksjoner de tilbyr som kan være til hjelp for cloud utviklere. Resultatene av denne delen er presentert i et tabellisert og lettlest format som inneholder funksjonene implementeringene og teknologiene kan tilby cloud utviklere. The use of Kubernetes for containerized application deployment has been rapidly increasing. However, at the same time, there is a growing demand for robust security measures and solutions that identify security blind spots and prevent them from being exploited. One aspect is the security of the cluster’s network, which is responsible for all communication between the services and machines in the container-orchestration software. Among others, eBPF and service mesh are two recent solutions that have gained popularity. eBPF is a privileged instruction set that enables developers to write programs that can be directly run in the operating system's kernel. On the other hand, a service mesh is a cluster infrastructure that facilitates communication between services by routing communication through a proxy.
In this thesis, I have studied the implications of deploying service meshes and eBPF programs into a Kubernetes cluster. Firstly, I performed performance tests on several service meshes and eBPF programs to measure latency and resource usage. This part included multiple scenarios simulating real-world communication between containers in the cluster. In order to evaluate eBPF in Kubernetes, which has only a handful of applications, I developed an original approach that mimics a subset of service mesh features. Then, as a Proof-of-Concept, I implemented it as a Golang eBPF plugin available and open-sourced on GitHub.
After performing the performance tests, the observed measurements show that under stressful loads (200-700 requests per second), the service meshes add up to 3 ms of delay, while the developed eBPF artifact has almost no delay. Similarly, regarding CPU usage, the service meshes again used up to one extra CPU core during runtime. However, regarding resource consumption, the results were more evenly distributed in terms of memory allocation; only Istio (one of the test subjects) used significantly more memory.
Secondly, I researched the two technologies (eBPF and service mesh), looking at what security and related features they provide that can alleviate the concerns of cloud developers. The results of this part are presented in a tabularized and easy-to-read format containing the features the implementations and technologies can provide cloud developers.