
FaaS服务创业公司Solo.io对外开源了BumbleBee项目,有效简化Linux核心技术eBPF的工具开发工作。BumbleBee自动产生用户空间程序样板程序代码,协助使用OCI镜像文件构建、执行和发布eBPF程序的用户,能够更专注于编写eBPF程序代码。
官方表示,Linux为目前主要操作系统之一,而由于Linux的热门,使得核心的更新需要经过仔细且漫长的程序,避免上游的更改对下游造成广泛且意料之外的影响。而eBPF沙盒技术则能填补Linux生态系统的创新需求,eBPF是一个核心技术,可以在操作系统核心中执行沙盒程序,让开发者快速发展网络和安全功能来强化核心,也就是说,eBPF让用户不需要将程序代码整合到核心中,就可以自定义核心行为。
eBPF在云计算管理和应用网络领域,有许多使用案例,像是eBPF让用户执行自定义函数,来监控服务之间的网络通信、关注延迟、过滤和路由资料封包到特定端点,或是收集Pod层级的网络统计信息等,在核心层级执行这些函数,能够应用自定义且高性能的网络逻辑,以及事件调用等功能。
eBPF采用二进制字节码格式,以Hooks等方式附加到操作系统中,用户通常使用高端语言,像是C来构建eBPF程序,并将其编译成为字节码,操作系统加载字节码,并对其进行验证,再经JIT编译后执行。
eBPF程序可以访问核心中的数据结构,但由于格式可能因核心版本而有所不同,这代表eBPF程序必须在执行前,在机器上先进行编译,考量这个过程过于麻烦,为了避免这个繁琐的过程,eBPF利用可移植通用类型描述格式BTF,期望在核心版本间通用。
但是打包和共享这些二进制程序,并没有被良好地处理,通常eBPF开发人员负责编写用户空间程序代码、eBPF程序代码,并自行决定共享和发布给其他机器和用户的方法,通常用户空间程序只是一些包含eBPF映射资料类型细节的样板程序代码。
而BumbleBee便是一个方便的工具,能够利用提供核心可移植性的BTF类型,来自动生成所有用户空间程序代码,Solo.io提到,他们已经与eBPF项目合作一年多,并且实例以Istio为基础的企业网络服务网格,但因为在开发过程中所遭遇的挑战,促使他们开发出BumbleBee。
BumbleBee提供类似Docker的体验,能够自动化一些重要的步骤,Bumblebee能够替任何eBPF应用程序进行打包、发布,并自动生成用户空间程序。BumbleBee大幅减少构建eBPF程序的障碍,让用户构建更强大的网络和可观察性安全工具。