Chi segue le ultime tendenze del cloud computing si sarà imbattuto più volte nel termine eBPF. Difficile non notarlo. Vediamo perché.
È alla ricerca di una soluzione moderna per security, observability e monitoring che mantenga prestazioni ottimali? eBPF potrebbe essere la risposta. In questo articolo vedremo perché questa funzionalità del Kernel Linux è diventata una delle parole d'ordine dello stack cloud-native. Analizzeremo inoltre una popolare soluzione cloud pronta all'uso basata su eBPF e capiremo come può rafforzare sicurezza, observability e monitoring del suo sistema cloud. Insomma, diamo un senso a tutto questo buzz!

Se conosce già eBPF e vuole leggere direttamente di Cilium/Dataplane V2, può saltare alla Parte 2 !
eBPF appartiene al mondo del Kernel Linux, un territorio poco frequentato dai più. Perché allora chi lavora "tra le nuvole" dovrebbe interessarsi a una funzionalità così a basso livello del Kernel Linux? La verità è che eBPF rappresenta una vera e propria rivoluzione, con un impatto enorme sia ad alto sia a basso livello.
Immaginiamo, ad esempio, di voler scrivere una logica personalizzata che ispezioni nel dettaglio tutti i pacchetti di rete in transito tra i container e lasci passare solo i pacchetti HTTP che soddisfano determinati criteri.
È noto che, per unire, iniettare e limitare il traffico di rete, occorre operare nello spazio kernel. Il Kernel Linux è il punto in cui si interviene sui meccanismi interni del sistema operativo Linux e sul suo imponente livello di networking, progettato per prestazioni, sicurezza e affidabilità.
Prima dell'arrivo di eBPF, era necessario scrivere codice per il kernel Linux (in linguaggio C), modificandone il codice sorgente oppure realizzando un loadable kernel module. Oltre alla complessità intrinseca, questa strada introduceva numerosi rischi, perché un kernel module è di fatto una libreria dinamica (un file .DLL o .so) agganciata al kernel.
Un bug critico nel codice può provocare un kernel panic e mandare in tilt l'intero sistema operativo. Per chi usa il cloud — e in particolare Kubernetes per il deploy di microservizi — i motivi per evitare di scrivere codice kernel personalizzato sono molti: sicurezza, velocità di sviluppo, complessità o addirittura impraticabilità dell'ambiente. In pratica, è una soluzione sproporzionata.
Poi è arrivato eBPF 🐝
Con eBPF è diventato possibile iniettare logica nel kernel senza toccarne il codice, ovvero direttamente dallo spazio utente. eBPF non solo semplifica il processo, ma lo rende anche molto più sicuro. Il processo di verifica di eBPF si assicura che il codice caricato nel kernel sia sicuro da eseguire, applicando una serie di controlli. Ad esempio, impone e verifica che:
- il codice venga eseguito in modo finito (nessun loop infinito);
- il codice non vada in crash né generi bug fatali per il sistema;
- il processo che carica il codice eBPF disponga dei privilegi necessari;
- il codice rispetti un limite di dimensione;
- non sia presente codice irraggiungibile.
Oltre al processo di verifica, al codice si applicano alcuni vincoli specifici: ad esempio, eBPF obbliga ad accedere a determinate risorse del kernel solo tramite apposite funzioni helper. In sintesi, eBPF offre una rete di sicurezza, semplicità di sviluppo, deploy fluido e prestazioni elevate. Numerosi strumenti e motori sfruttano oggi la tecnologia eBPF per offrire nuove funzionalità ai workloads cloud-native, in modo trasparente e performante.
Per provare eBPF con mano, dia un'occhiata a questo video .
I progetti più diffusi basati su eBPF 🔋
- Cilium — Networking, Security e Observability basati su eBPF per Kubernetes
- Falco — Cloud-Native Runtime Security
- Tracee — Runtime Security e Forensics con eBPF
- Pixie — Piattaforma di troubleshooting applicativo per Kubernetes (da provare!)
Ci auguriamo che queste informazioni le siano utili. In questa lista trova altri progetti basati su eBPF. Nella Parte 2 approfondiremo Cilium come popolare soluzione eBPF per K8s e scopriremo che cosa c'entra Dataplane V2.
Grazie per la lettura! Per restare in contatto, ci segua sul DoiT Engineering Blog , sul canale LinkedIn di DoiT e sul canale Twitter di DoiT . Per scoprire le opportunità di carriera, visiti https://careers.doit-intl.com .