红帽 OpenShift 服务网格 3.1 已发布,包含在红帽 OpenShift 容器平台和红帽 OpenShift 平台 Plus 中。此版本基于 Istio、Envoy 和 Kiali 项目,将 Istio 的版本更新为1.26,将 Kiali 的版本更新为2.11,并受 OpenShift 容器平台 4.16 及更高版本支持。
这是继红帽 OpenShift 服务网格 3.0 后的第一个次要版本, 这是一个重大更新,旨在融合 OpenShift 服务网格与社区 Istio 项目,并使用Sail operator进行安装和管理。这一更改有助于确保红帽 OpenShift 服务网格能够在红帽支持下提供最新的稳定 Istio 功能。
升级到 OpenShift 服务网格 3.1
如果您运行的是 OpenShift 服务网格 2.6 或更早版本,必须先升级到 OpenShift 服务网格 3.0,然后才能升级到 3.1。我们建议立即迁移到 OpenShift 服务网格 3.0,因为版本 2.6 将于 2026 年 3 月 12 日终止其生命周期。OpenShift 服务网格 3.0 文档中提供了详细的迁移指南,包括对 OpenShift 服务网格 2.6 和 3.0 之间差异的分析。
我们最近还发布了一篇文章,介绍如何使用 Kiali 控制台在 OpenShift 服务网格 2.6 和 3.0 之间迁移。
如需 OpenShift 服务网格 3.0 的实际应用示例以及完全配置的指标和 Kiali 控制台,请参阅该解决方案模式。
OCP 4.19+ 中的 Kubernetes 网关 API 支持
Kubernetes 网关 API 是下一代 Kubernetes 入口、负载平衡器和服务网格 API。Istio 计划使其成为使用服务网格创建和管理流量的默认 API 集,也是使用 Istio 环境模式所必需的。请注意,尚未有任何计划删除稳定的 Istio API,如 VirtualService、DestinationRule 等。有时可能需要使用这些 API 来利用尚未添加到 Kubernetes 网关 API 的功能。
虽然 OpenShift 服务网格 3.0 包含了对 Kubernetes 网关 API 的支持,但用户需要安装不受支持的自定义资源定义(CRD)才能利用该功能。自 OpenShift 容器平台 4.19 及更高版本起,这种情况已发生变化,OpenShift 中现在默认提供所需的 CRD。您不再需要单独安装这些 CRD。红帽全面支持 OpenShift 附带的网关 API CRD。
我们希望为生成式 AI 工作负载和流量模式提供优化支持,因此通过向后移植到 OpenShift 服务网格 3.1,纳入了对网关 API 推理扩展的技术预览支持。
为 x86 集群提供全面的双栈支持
此版本为运行 x86 硬件的 OpenShift 集群提供对 OpenShift 服务网格的双栈 IPv4 和 IPv6 工作负载的支持。要在 OpenShift 服务网格中启用双栈支持,需要在 Istio 客户资源中将 ISTIO_DUAL_STACK 标志设置为 true。双栈的上游 sail-operator 文档中对此进行了演示, 以及社区 Istio 双栈文档,随后将提供 OpenShift 服务网格产品文档。
迁移至 UBI Micro 容器
此版本移动了大部分容器,包括关键的 istiod 和代理 (Envoy) 容器,以使用 UBI Micro 基础映像。UBI Micro 是红帽企业 Linux 的最小通用基础镜像(UBI),通过排除容器镜像中通常包含的软件包管理器及其所有依赖项而获得。采用 UBI Micro 有助于最大限度地减少作为 OpenShift 服务网格一部分提供的容器镜像的攻击面。
迈向无边车服务网格:Istio 的环境模式
OpenShift 服务网格 3.1 基于 Istio 1.26,主要包含增量更新,而 OpenShift 服务网格 3.0 基于 Istio 1.24。这是因为 Istio 社区和红帽非常关注下一代服务网格数据平面:Istio 的环境模式。
在过去几年中,我们看到服务网格的使用量稳步增长,但对边车代理的需求通常是采用的障碍,因为在每个应用容器旁边运行边车容器需要额外的资源(主要是内存和 CPU)。这使得服务网格的采用变得复杂,因为边车代理必须作为容器集生命周期的一部分进行添加和更新。这意味着必须重新启动应用才能引入服务网格的更新。
Istio 的环境模式旨在通过消除对边车代理的需求并将 Istio 数据平面拆分为两个独立的层来解决这些问题。这使得应用所有者能够以更低的复杂性逐步采用服务网格功能。
这种拆分架构可显着减少为启用服务网格而部署的代理,从而显着减少运行服务网格所需的资源。由于 Istio 的环境模式不需要边车代理,因此可以在网格中添加和删除应用,而无需修改或重启应用容器集。
Istio 环境模式的两个独立层是:
- Ztunnel:一种轻量级第 4 层节点级代理(作为 Kubernetes 中的守护进程集运行),在应用容器集的网络命名空间内创建侦听套接字,以使用 mTLS 加密透明地升级容器集级流量。Ztunnel 还负责节点上容器集的证书和身份管理(并且仅节点上的容器集)。仅使用 Ztunnel,就可以实现自动 mTLS 加密、第 4 层遥测和策略管理。
- Waypoint:一种可选的 Envoy 代理,类似于网关,为一组应用(默认为命名空间范围)部署,以提供第 7 层网格功能,如应用级安全性和流量策略、应用级遥测和网格弹性功能。与边车不同,路点代理可以根据需要添加,并独立于应用容器进行扩展。
有关 Istio 环境模式架构和权衡的更多详情,请参考在红帽 OpenShift 上试用 Istio 环境模式。
OpenShift 服务网格 3.1 将 Istio 的环境模式状态更新为技术预览,并提供由红帽全面支持的 Ztunnel 代理,该代理使用 OpenSSL 进行加密,以确保其设计为支持 FIPS。OpenShift 服务网格 3.1 的安装指南中包含有关在 OpenShift 上使用 Istio 环境模式的文档。随着我们朝着公开发布的方向发展,这将在未来几个月内完成。
请注意,Istio 的环境模式需要 Kubernetes 网关 API,因此请在 OpenShift 容器平台 4.19 或更高版本上使用,其中包括默认安装的受支持的网关 API CRD。正如社区 Istio 文档中所提到的,如果您希望在 OpenShift 的早期版本上试验 Istio 的环境模式,您必须安装不受支持的 Kubernetes 网关 API CRD。请注意,升级到 OCP 4.19 中支持的 Kubernetes 网关 API CRD 可能会导致停机。
我们还建议在尚未安装 OpenShift 服务网格的集群上试验 Istio 环境模式,以降低干扰现有服务网格部署的可能性。将来,我们将提供有关运行环境模式数据平面和边车模式数据平面的文档,以及有关将应用从边车模式迁移到环境模式的指南。
请注意,从 Istio 1.26 开始,并非所有边车模式功能都 在环境模式中受支持,并且一些功能在上游 Istio 中仍为“alpha”状态 。环境模式可能并不适合所有服务网格用例。最显着的差距是多网络多集群设置,以及环境和边车模式数据平面之间的互操作性。Istio 社区正在开发这些功能和更多功能。
Kiali 更新
Kiali 是 OpenShift 服务网格附带的 Istio 服务网格的控制台。此版本将其更新为 2.11,其中包括许多更新和增强功能(如 Istio 的环境模式)。
网格页面更新
网格页面继续获得增强,作为监控 Istio 基础架构状态的主要仪表板,涵盖 Istio 控制平面本身、数据平面组件,以及 Prometheus 和 Tempo 等可观测性插件。此版本包含多项更新,包括 Istio 网关和环境模式数据平面组件:Ztunnel 和 Waypoint。通过网格页面,可以检查组件以显示关键状态信息,包括与每个组件相关的指标和配置转储。
大型网格的性能和可扩展性
Kiali 的一个常见问题是,随着服务网格中工作负载数量的增长,其性能会受到影响。过去,Kiali 在超大型服务网格中难以保持响应。Kiali 项目的 FAQ 现在包含一个关于性能的新章节,提供在使用 Kiali 处理大型网格部署时的指导。此版本包含旨在提高性能的更新,包括更好地管理大型网格的更新。
例如,默认情况下,Kiali 会立即尝试呈现页面,并根据刷新间隔 下拉列表中的设置自动更新大多数页面。对于超大型网格,即使是初始渲染也可能很慢,从而延迟使用控制台的能力。Kiali 现在提供手动 刷新设置,仅在手动单击刷新按钮时更新页面。可以通过在 Kiali 自定义资源定义(CRD)中设置 spec.kiali_feature_flags.ui_defaults.refresh_interval: 手册来配置此功能。
您现在还可以禁用验证,以提高大型网格的性能和响应能力。为此,您可以将 Kiali operator 配置spec.external_services.istio.validation_reconcile_interval 设置为 0。
开始使用 OpenShift 服务网格
如果您是 OpenShift 服务网格的新手,请参阅红帽 OpenShift 服务网格简介和我们的 Day 1 安装说明。如需完整的运行示例,请查阅使用 OpenShift 服务网格 3 优化流量和可观测性解决方案模式。
如果您之前使用的是 OpenShift 服务网格 3.0,请查阅升级文档,了解更新 OpenShift 服务网格 3 operator、Istio 控制平面、Istio CNI 资源以及构成数据平面的代理的不同方法。
如果您之前使用的是 OpenShift 服务网格 2.6 或更早版本,请查看 OpenShift 服务网格 2 和 3 之间的差异,以及我们详细的迁移文档。还有一篇博客文章,描述了使用 Kiali 的过程。
关于作者
Jamie Longmuir is the product manager leading Red Hat OpenShift Service Mesh. Prior to his journey as a product manager, Jamie spent much of his career as a software developer with a focus on distributed systems and cloud infrastructure automation. Along the way, he has had stints as a field engineer and training developer working for both small startups and large enterprises.