快速、安全且简单:Istio 的 Ambient 模式在 v1.24 中正式推出
我们最新发布的 Ambient 模式(无边车的服务网格)已为所有人做好准备。
我们很自豪地宣布,Istio 的 Ambient 数据平面模式已达到通用可用性(GA), ztunnel、waypoint 和 API 已被 Istio TOC 标记为稳定。 这标志着 Istio 功能阶段进展的最后阶段, 表明 Ambient 模式已完全准备好用于广泛的生产用途。
Ambient 网格及其使用 Istio Ambient 模式的参考实现于 2022 年 9 月发布。 从那时起,我们的社区已经投入了 26 个月的辛勤工作和协作,Solo.io、 谷歌、微软、英特尔、Aviatrix、华为、IBM、Red Hat 等许多公司都做出了贡献。 1.24 中的稳定状态表明 Ambient 模式的功能现已完全准备好用于广泛的生产工作负载。 这对 Istio 来说是一个巨大的里程碑,它使 Istio 无需 Sidecar 即可投入生产, 并为用户提供了选择。
为什么是 Ambient 网格?
自 2017 年 Istio 发布以来,我们观察到应用程序对网格功能的需求明显且不断增长 — 但听说许多用户发现 Sidecar 的资源开销和操作复杂性难以克服。Istio 用户与我们分享的挑战包括 Sidecar 在添加后如何破坏应用程序、每个工作负载的代理对 CPU 和内存的需求很大, 以及每次发布新的 Istio 版本时都需要重新启动应用程序 Pod 的不便。
作为一个社区,我们从头开始设计了 Ambient 网格来解决这些问题, 减轻了用户在实施服务网格时面临的先前复杂性障碍。这个新概念被命名为“Ambient 网格”, 因为它被设计为对您的应用程序透明,没有与用户工作负载共置的代理基础设施, 不需要对配置进行细微更改,也不需要重新启动应用程序。在 Ambient 模式下, 从网格中添加或删除应用程序非常简单。您需要做的就是标记命名空间, 该命名空间中的所有应用程序都会立即添加到网格中。这会立即使用行业标准的双向 TLS 加密保护该命名空间内的所有流量 - 无需其他配置或重新启动! 有关我们构建 Istio Ambient 模式的原因的更多信息, 请参阅介绍 Ambient 网格博客。
Ambient 模式如何使采用变得更容易?
Ambient 网格背后的核心创新是将四层 (L4) 和七层 (L7) 处理分为两个不同的层。 Istio 的 Ambient 模式由轻量级、共享的 L4 节点代理和可选的 L7 代理提供支持, 从数据平面上消除了对传统 Sidecar 代理的需求。这种分层方法允许您逐步采用 Istio, 从而实现从无网格到安全覆盖 (L4) 再到可选的完整 L7 处理的平稳过渡 — 根据需要, 按命名空间逐个进行,覆盖整个集群。
通过利用 Ambient 网格,用户可以绕过 Sidecar 模型中之前的一些限制元素。 服务器发送优先协议现在可行,大多数保留端口现在可用, 并且消除了容器绕过 Sidecar(无论是恶意的还是非恶意的)的能力。
轻量级共享 L4 节点代理称为 ztunnel(零信任隧道)。 ztunnel 消除了在集群中过度配置内存和 CPU 以处理预期负载的需求, 从而大幅降低了运行网格的开销。在某些用例中,节省的成本可能超过 90% 或更多, 同时仍使用具有加密身份的相互 TLS、简单的 L4 授权策略和遥测提供零信任安全性。
L7 代理称为 waypoint。 waypoint 处理 L7 功能,例如流量路由、丰富的授权策略实施和企业级弹性。 waypoint 在您的应用程序部署之外运行,可以根据您的需求独立扩展, 可以是整个命名空间,也可以是命名空间内的多个服务。与 Sidecar 相比, 您不需要每个应用程序 Pod 一个 waypoint,并且您可以根据其范围有效地扩展 waypoint, 从而在大多数情况下节省大量 CPU 和内存。
L4 安全覆盖层与 L7 处理层之间的分离允许逐步采用环境模式数据平面, 这与早期的二进制“全部”注入 Sidecar 不同。用户可以从安全的 L4 覆盖开始, 它提供了人们部署 Istio 所需的大多数功能(mTLS、授权策略和遥测)。 然后可以根据具体情况启用复杂的 L7 处理,例如重试、流量拆分、负载均衡和可观察性收集。
快速探索和采用环境模式
Docker Hub 上的 ztunnel 镜像下载量已超过 100 万次, 仅上周就有约 63,000 次下载。
我们询问了一些用户对 Ambient 模式 GA 的看法:
范围是什么?
Ambient 模式的普遍可用性意味着以下事项现在被认为是稳定的:
- 使用 Helm 或
istioctl
安装支持 Ambient 模式的 Istio。 - 将工作负载添加到网格, 以获得具有加密身份、L4 鉴权策略和遥测的双向 TLS。
- 配置 waypoint 以使用 L7 功能, 例如流量转移、请求路由和丰富的授权策略实施。
- 将 Istio 入口网关连接到 Ambient 模式下的工作负载, 支持 Kubernetes Gateway API 和所有现有的 Istio API。
- 使用 waypoint 进行受控网格出口
- 使用
istioctl
操作 waypoint,并排除 ztunnel 和 waypoint 故障。
有关更多信息,请参阅功能状态页面。
路线图
我们不会止步不前!我们将继续为未来版本开发许多功能,包括目前处于 Alpha/Beta 阶段的一些功能。
在我们即将发布的版本中,我们希望快速实现以下 Ambient 模式的扩展:
- 全面支持 Sidecar 和 Ambient 模式互操作性
- 多集群安装
- 多网络支持
- VM 支持
那么 Sidecar 呢?
Sidecar 不会消失,它仍然是 Istio 的首选。您可以继续使用 Sidecar, 它们仍将得到全面支持。虽然我们认为大多数用例最适合使用 Ambient 模式下的网格, 但 Istio 项目仍致力于持续支持 Sidecar 模式。
今天尝试 Ambient 模式
随着 Istio 1.24 版本的发布和 Ambient 模式的 GA 版本的发布, 现在可以比以往更轻松地在您自己的工作负载上试用 Istio。
- 按照入门指南探索 Ambient 模式。
- 阅读我们的用户指南了解如何逐步采用 Ambient 模式来实现双向 TLS 和 L4 鉴权策略、流量管理、丰富的 L7 鉴权策略等。
- 探索新的 Kiali 2.0 仪表板以可视化您的网格。
您可以在 Istio Slack 上的 #ambient 频道与开发人员交流,或者使用 GitHub 上的讨论论坛来解答您的任何问题。