与 Sidecar 说再见:Istio 的 Ambient 模式在 v1.22 中进入 Beta

第 4 层和第 7 层功能现已准备好投入生产。

2024 年 5 月 13 日 | 作者:Lin Sun - Solo.io,代表 Istio 指导委员会和技术监督委员会

今天,Istio 的革命性新 Ambient 数据平面 模式已进入 Beta。Ambient 模式旨在简化操作、扩大应用程序兼容性和降低基础设施成本。它为您提供了一个无 Sidecar 的数据平面,该平面已集成到您的基础设施中,同时保留了 Istio 的核心功能,例如零信任安全、遥测和流量管理。

Ambient 模式 于 2022 年 9 月宣布。从那时起,我们的社区投入了 20 个月的努力和协作,得到了 Solo.io、Google、Microsoft、Intel、Aviatrix、Huawei、IBM、Red Hat 和许多其他公司的贡献。1.22 中的 Beta 状态表明 Ambient 模式的功能现在已准备好用于生产工作负载,但需要采取适当的预防措施。这对 Istio 来说是一个巨大的里程碑,它将第 4 层和第 7 层网格功能都带入了生产就绪状态,而无需使用 Sidecar。

为什么选择 Ambient 模式?

在倾听 Istio 用户的反馈时,我们观察到对应用程序的网格功能的需求不断增长,但我们也听到很多用户发现 Sidecar 的资源开销和操作复杂性难以克服。Sidecar 用户与我们分享的挑战包括:Istio 如何在添加 Sidecar 后破坏应用程序、Sidecar 对 CPU 和内存的大量消耗,以及每次发布新代理都需要重新启动应用程序 Pod 的不便。

作为一个社区,我们设计了 Ambient 模式来解决这些问题,减轻了以前寻求实施服务网格的用户所面临的复杂性障碍。新的功能集被命名为“Ambient 模式”,因为它旨在对您的应用程序透明,确保不需要额外的配置即可采用它,并且不需要用户重新启动应用程序。

在 Ambient 模式下,添加或删除网格中的应用程序非常容易。您现在只需 标记一个命名空间,该命名空间中的所有应用程序都会被添加到网格中。这立即使用 mTLS 保护所有流量,而无需 Sidecar 也不需要重新启动应用程序。

请参阅 介绍 Ambient Mesh 博客,以了解有关我们构建 Ambient 模式的更多信息。

Ambient 模式如何使采用变得更容易?

Istio 的 Ambient 模式引入了轻量级的共享第 4 层 (L4) 节点代理和可选的第 7 层 (L7) 代理,从而无需数据平面中的传统 Sidecar 代理。Ambient 模式背后的核心创新是它将 L4 和 L7 处理分成两个不同的层。这种分层方法使您能够逐步采用 Istio,从而实现从无网格到安全覆盖(L4)再到可选的完整 L7 处理的平滑过渡——根据需要,在您的整个集群中按命名空间进行。

Ambient 模式无需对现有的 Kubernetes 部署进行任何修改即可工作。您可以标记一个命名空间,将该命名空间中的所有工作负载添加到网格中,或者根据需要选择加入某些部署。通过使用 Ambient 模式,用户绕过了以前 Sidecar 模型中的一些限制性元素。服务器先发协议现在可以工作,大多数保留端口现在可用,并且消除了容器绕过 Sidecar 的可能性——无论是有意还是无意。

轻量级的共享 L4 节点代理称为 ztunnel(零信任隧道)。Ztunnel 通过消除在集群内过度配置内存和 CPU 以处理预期负载的必要性,大幅降低了运行网格的开销。在某些用例中,节省的资源可能超过 90% 或更多,同时仍然使用带有加密身份的双向 TLS 提供零信任安全、简单的第 4 层授权策略和遥测。

L7 代理称为 waypoints。Waypoints 处理 L7 功能,例如流量路由、丰富的授权策略执行和企业级弹性。Waypoints 运行在您的应用程序部署之外,可以根据您的需要独立扩展,这可能针对整个命名空间或命名空间内的多个服务。与 Sidecar 相比,您不需要每个应用程序 Pod 都有一个 Waypoint,并且可以根据其范围有效地扩展您的 Waypoint,因此在大多数情况下可以节省大量的 CPU 和内存。

L4 安全覆盖层和 L7 处理层之间的分离允许逐步采用 Ambient 模式数据平面,这与早期二进制“全包”注入 Sidecar 形成对比。用户可以从安全 L4 覆盖开始,它提供了大多数人部署 Istio 的功能(mTLS、授权策略和遥测)。然后可以根据需要逐案启用复杂的 L7 处理,例如重试、流量拆分、负载均衡和可观察性收集。

Beta 范围是什么?

我们建议您在测试环境中验证后,在生产环境中探索 Ambient 模式的以下 Beta 功能,并采取适当的预防措施

Alpha 功能

我们希望在 Ambient 模式中包含许多其他功能,这些功能已经实现,但在这个版本中仍然处于 Alpha 状态。请帮助测试它们,以便它们可以在 1.23 或更高版本中升级到 Beta

路线图

我们有一些功能尚未在 Ambient 模式中实现,但计划在即将发布的版本中提供

Sidecar 怎么办?

Sidecar 不会消失,并且仍然是 Istio 中的一流公民。您可以继续使用 Sidecar,它们将继续得到完全支持。对于任何不在 Ambient 模式 Alpha 或 Beta 范围内的功能,您应该考虑使用 Sidecar 模式,直到该功能添加到 Ambient 模式中。某些用例,例如基于源标签的流量转移,将继续使用 Sidecar 模式进行最佳实现。虽然我们相信大多数用例将最适合 Ambient 模式下的网格,但 Istio 项目仍致力于持续支持 Sidecar 模式。

立即试用 Ambient 模式

随着 Istio 1.22 版本和 Ambient 模式的 Beta 版本发布,现在比以往任何时候都更容易在您自己的工作负载上试用 Istio。按照 入门指南 探索 Ambient 模式,或阅读我们的新 用户指南,了解如何逐步采用 Ambient 来实现双向 TLS 和第 4 层授权策略、流量管理、丰富的第 7 层授权策略等。您可以通过 Istio Slack 上的 #ambient 频道与开发人员互动,或使用 GitHub 上的讨论论坛来解决您可能遇到的任何问题。

分享此文章