🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## What is Cilium? Cilium 是开源软件,用于透明地保护使用 Docker 和 Kubernetes 等 Linux 容器管理平台部署的应用程序服务之间的网络连接。 Cilium 的基础是一种名为 eBPF 的新 Linux 内核技术,它可以在 Linux 本身内动态插入强大的安全可见性和控制逻辑。 由于 eBPF 在 Linux 内核内部运行,因此可以应用和更新 Cilium 安全策略,而无需对应用程序代码或容器配置进行任何更改。 ## What is Hubble? Hubble 是一个完全分布式网络和安全可观测平台。 它构建在 Cilium 和 eBPF 之上,能够以完全透明的方式深入了解服务的通信和行为以及网络基础设施。 通过构建在 Cilium 之上,Hubble 可以利用 eBPF 来提高可见性。 通过依赖 eBPF,所有可见性都是可编程的,并允许采用动态方法,最大限度地减少开销,同时根据用户的要求提供深入而详细的可见性。 Hubble 的创建和专门设计就是为了充分利用这些新的 eBPF 能力。 ## Why Cilium & Hubble? eBPF 能够以前所未有的粒度和效率对系统和应用程序进行可见性和控制。 它以完全透明的方式完成此操作,无需应用程序以任何方式进行更改。 eBPF 同样能够处理现代容器化工作负载以及更传统的工作负载(例如虚拟机和标准 Linux 进程)。 现代数据中心应用程序的开发已转向面向服务的架构(通常称为微服务),其中大型应用程序被拆分为小型独立服务,这些服务通过使用 HTTP 等轻量级协议的 API 相互通信。 微服务应用程序往往是高度动态的,随着应用程序横向扩展/收缩以适应负载变化以及作为持续交付的一部分部署的滚动更新期间,各个容器会启动或销毁。 这种向高度动态微服务的转变对于确保微服务之间的连接既是挑战也是机遇。 传统的 Linux 网络安全方法(例如 iptables)会根据 IP 地址和 TCP/UDP 端口进行过滤,但 IP 地址在动态微服务环境中经常发生变化。 容器的高度不稳定的生命周期导致这些方法难以与应用程序一起扩展,因为负载平衡表和访问控制列表携带数十万条规则,需要以不断增长的频率进行更新。 出于安全目的,协议端口(例如用于 HTTP 流量的 TCP 端口 80)不能再用于区分应用程序流量,因为该端口用于跨服务的各种消息。 另一个挑战是提供准确可见性的能力,因为传统系统使用 IP 地址作为主要识别工具,而在微服务架构中,其生命周期可能会大大缩短,仅为几秒钟。 通过利用 Linux eBPF,Cilium 保留了透明地插入安全可见性 + 强制执行的能力,但以基于服务/pod/容器身份(与传统系统中的 IP 地址识别相反)的方式实现,并且可以根据应用程序进行过滤 层(例如 HTTP)。 因此,Cilium 不仅通过将安全性与寻址解耦,使得在高度动态的环境中应用安全策略变得简单,而且除了提供传统的第 3 层和第 4 层分段之外,还可以通过在 HTTP 层操作来提供更强的安全隔离 。 eBPF 的使用使 Cilium 能够以高度可扩展的方式实现所有这一切,即使对于大规模环境也是如此。