服务网格架构:Sidecar vs. Sidecarless,谁才是未来?

探讨服务网格架构中 sidecar 与 sidecarless 的争论,比较 Cilium、Istio 和 Linkerd 在安全性、性能和架构复杂性方面的不同观点,帮助读者理解这些技术专家的看法和背后的争议。

版权声明
本文为 Jimmy Song 原创。转载请注明来源: https://jimmysong.io/blog/service-mesh-sidecar-vs-sidecarless-debate/
查看本文大纲

服务网格已经成为现代云原生应用架构中至关重要的一部分,帮助团队在大规模分布式系统中管理微服务通信、提高安全性并优化性能。然而,随着技术的不断演进,关于服务网格架构的最佳实践出现了激烈的争论,尤其是关于 sidecar 与 sidecarless 模式的选择问题。这场争论的核心在于如何在性能、资源利用、安全性和操作复杂性之间取得最佳平衡。近年来,Cilium 引入了无 sidecar 架构的 eBPF 技术,而 Istio 也推出了 Ambient 模式,结合了传统 sidecar 与无 sidecar 的优点。与此同时,Linkerd 则坚守 sidecar 架构,并对新兴的无 sidecar 方法持保守态度。这篇文章将深入探讨这些服务网格架构的主要观点和争议,并分析每种方法的优势与挑战。

关于服务网格有无 sidecar 的争论

关于服务网格的 sidecar 与无 sidecar 的争论是随着 Cilium 的推出和各大服务网格技术的演变而逐渐加剧的,尤其是在 2021 年之后:

  1. Cilium Service Mesh 的推出(2021 年 12 月) :Cilium 通过 eBPF 技术引入了无 sidecar 的服务网格架构,开始引发对传统 sidecar 模式的讨论。这一概念的提出标志着无 sidecar 架构的兴起。

  2. Linkerd 与 Istio 的反应(2021 年 12 月至 2022 年初) :Linkerd 的创始人 William Morgan 及其团队对 Cilium 的无 sidecar 方法表示担忧,认为这种方法可能会带来安全和性能上的问题。这一讨论逐渐演变为对 sidecar 与无 sidecar 架构的更广泛争辩。

  3. Istio 的 Ambient 概念(2022 年 5 月) :Istio 提出了 Ambient Mesh,尝试结合 sidecar 和主机级代理的优势,这进一步加剧了各方对服务网格架构的讨论。此时,业界对不同服务网格架构的看法开始分化。

  4. 专家观点的发表(2021 年 12 月至 2023 年) :多位行业专家如 Thomas Graf 和 William Morgan 等在不同场合发表了对 sidecar 与无 sidecar 架构的看法,形成了更为系统的争论。这些观点在多个会议和文章中被广泛讨论,推动了对服务网格架构的深入理解。

各方观点

下表摘录了各服务网格提供商及用户的公开观点。

人物 职位/公司 观点
Andrey Rybka Bloomberg 倾向于选择成熟度更高的 Istio,特别是在有 Google 等大公司支持的情况下。
Ara Pulido Datadog 开发者关系专家 认为 eBPF 工具(如 Cilium)是 Kubernetes 网络扩展问题的解决方案,使用 Cilium 可以完全替代 kube-proxy,实现更细粒度的容器安全特性;移除 kube-proxy 后,操作简化,性能提升。
Dale Ragan SAP Concur Technologies 首席软件设计工程师 认为 eBPF 在安全方面提供了更好的优势,可同时应用于整个集群和各个服务;正在使用 Cilium 替代 Flannel 作为其生产环境中的容器网络接口(CNI)插件,并测试 Isovalent 的专有 SecOps 插件。
Dan Wendlandt Isovalent CEO 认为 eBPF 和服务网格是互补的技术,eBPF 可作为服务网格的基础,为服务网格代理(如 Envoy)提供高效的数据进出服务。
David Ortiz Constant Contact 首席软件工程师 对 Istio 的 Ambient Mesh 非常感兴趣,认为其显著简化了 Istio 的操作流程,尤其是在升级方面,计划尽快采用这一技术。
Filip Nikolic PostFinance 认为 eBPF 基础的无 sidecar 服务网格具有更高的网络性能和效率,并且安全实践也在不断进化。
Greg Otto Comcast 云服务执行董事 对 Istio Ambient Mesh 感兴趣,计划在其成熟后进行评估;希望能够分别扩展和服务第 7 层(L7)和第 4 层(L4)功能,认为减少不必要的 L7 过滤可以减少安全暴露面和漏洞风险。
John Mitchell 独立数字化转型顾问 认为 eBPF 正经历一个炒作周期,但它确实有潜力为 Kubernetes 提供高级网络安全特性,而无需改变应用程序代码。
Kasper Nissen Lunar 的首席平台架构师 支持 sidecar 架构,认为它简单易用,并与其他容器技术相同;在全面部署服务网格后,资源消耗增加不多但功能增多;指出 sidecar 同步问题源于 Kubernetes 网络层的问题,建议在 Kubernetes 层面进行修复。
Louis Ryan Solo.io CTO 强调 Istio 1.23 版引入的 Ambient Mesh 的优势,包括减少 sidecar 的使用,简化架构,提高性能,降低复杂性,并增强了灵活性与可扩展性。他认为,Ambient Mesh 能够帮助团队更轻松地管理微服务架构。
Thomas Graf Isovalent CTO 主张通过 eBPF 和 Cilium 提供无边车的服务网格,优化 mTLS 认证,消除 sidecar 的使用,从而提高性能和安全性。认为分离认证握手和数据传输的模式能够实现更高效、更灵活的服务间认证,同时减少管理复杂性,并提供对多种网络协议的支持。
William Morgan Linkerd 创始人兼 Buoyant CEO 强烈批评无 sidecar 的 eBPF 方法,认为 sidecar 提供了更好的安全隔离和性能预测性,指出 sidecarless 架构可能重蹈 Linkerd 1 的覆辙。他认为,eBPF 和 sidecar 不是对立的,eBPF 可以用于网络优化,但不应替代 sidecar。主张继续使用更轻量的 sidecar 代理。
Zachary Butcher Tetrate 创始工程师 对 Ambient Mesh 持审慎乐观态度,认为它有助于降低服务网格的采用难度,但当前性能表现较差、功能有限,距离生产就绪还有很长的路要走。他建议用户暂时不要在生产环境中使用 Ambient Mesh,直到其成熟度提高。
关于服务网格技术选型的公开观点

个人观点

近年来,我有幸见证并参与了许多关于服务网格架构选择的讨论和实践。我认为服务网格选择不应仅仅基于技术特性的比较,更应考虑到团队的具体需求、现有技术栈的兼容性以及未来的扩展性。

在 sidecar 与 sidecarless 的选择问题上,我的看法是两者各有千秋。Sidecar 模型虽然在某些情况下可能会带来资源占用和管理复杂性的增加,但它提供了更细粒度的流量控制和安全策略实施,这对于需要高度精细化管理的企业环境是非常宝贵的。与此同时,sidecarless 模型,尤其是通过 eBPF 技术实现的,为服务网格带来了前所未有的性能优化和资源利用率提升,它对于构建高效率的大规模服务网格同样具有重要价值。

因此,我的建议是,企业在选择服务网格架构时,应该从自身的业务需求出发,综合考虑安全性、性能、成本以及团队的运维能力,选择最适合自己的服务网格解决方案。

总结

总结下目前关于这三个流行的服务网格项目的主流看法:

  1. Linkerd:强调 sidecar 的安全隔离和性能稳定性,对 eBPF 无 sidecar 模式持批评态度,认为其复杂性和安全风险增加。
  2. Istio:引入 Ambient Mesh,部分采用无 sidecar 方法,以降低复杂性和提高性能,但仍保留 sidecar 的部分功能,体现出对现有 sidecar 架构的保留与创新。
  3. Cilium:主张通过 eBPF 无 sidecar 模式来优化网络性能和安全性,简化操作,同时保持对多种协议的支持,推动服务网格功能集成到 Linux 内核中。

不同的观点反映了各自对服务网格架构设计的偏好与关注点,不同企业应根据自身需求和技术背景选择合适的服务网格方案。

参考

最后更新于 2024/10/08