本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

Istio

Rancher-Istio 自 Rancher v2.12.0 起已被弃用;请转向 SUSE 应用程序集合 版本的 Istio,以获得增强的安全性(包含在 SUSE Rancher Prime 订阅中)。 详细信息可以在 此公告 中找到。

Istio 是一个开源工具,使 DevOps 团队更容易观察、保护、控制和排查复杂微服务网络中的流量。

随着微服务网络的变化和增长,它们之间的交互可能变得越来越难以管理和理解。在这种情况下,拥有一个作为独立基础设施层的服务网格是非常有用的。Istio 的服务网格让您可以在不直接更改微服务的情况下操控微服务之间的流量。

我们对 Istio 的集成设计使得 Rancher 操作员,如管理员或集群所有者,可以将 Istio 提供给开发团队。然后,开发人员可以使用 Istio 来强制执行安全策略、排查问题,或管理绿色/蓝色部署、金丝雀部署或 A/B 测试的流量。

这个核心服务网格提供的功能包括但不限于以下内容:

  • 流量管理,如入口和出口路由、断路器、镜像。

  • 安全性,提供用于验证和授权流量及用户的资源,包括 mTLS。

  • 可观测性,包括日志、指标和分布式流量流。

设置 Istio 之后,您可以通过 Rancher UI、kubectlistioctl 利用 Istio 的控制平面功能。

在项目中使用 Istio 之前,需要由 cluster-admin 进行设置。

Rancher v2.5 中的新功能

Istio 的整体架构已被简化。通过合并 Pilot、Citadel、Galley 和 sidecar 注入器,创建了一个单一组件 Istiod。节点代理功能也已合并到 istio-agent 中。

之前由 Istio 安装的附加组件(cert-manager、Grafana、Jaeger、Kiali、Prometheus、Zipkin)现在需要单独安装。Istio 将支持来自 Istio 项目的集成安装,并将保持与那些不来自该项目的集成的兼容性。

Prometheus 集成仍然可以通过安装 Rancher Monitoring 或安装您自己的 Prometheus 操作员来实现。Rancher 的 Istio 图表还将默认安装 Kiali,以确保您可以开箱即用地全面了解您的微服务。

Istio 已经不再使用 Helm 来安装 Istio,而是通过 istioctl 二进制文件或 Istio Operator 提供安装。为了确保与 Istio 的最简单交互,Rancher 的 Istio 将维护一个 Helm 图表,该图表利用 istioctl 二进制文件来管理您的 Istio 安装。

此 Helm 图表将在 UI 的 APP 和市场中提供。具有 Rancher 图表目录访问权限的用户需要在项目中使用 Istio 之前进行设置。

与 Istio 捆绑的工具

我们的 Istio 安装程序将 istioctl 二进制命令封装在一个方便的 Helm 图表中,包括一个覆盖文件选项,以允许复杂的自定义。

它还包括以下内容:

Kiali

Kiali 是一种全面的可视化工具,用于绘制服务网格中的流量流动。它允许您查看它们之间的连接,包括流量速率和延迟。

您可以检查服务网格的健康状况,或深入查看单个组件的传入和传出请求。

对于 103.1.0+up1.19.6 及以后的 Istio 安装,Kiali 使用令牌值作为其身份验证策略。Rancher 中 Kiali 服务帐户的名称是 kiali。如果您正在编写需要输入 Kiali 服务帐户名称的命令(例如,如果您尝试生成或检索会话令牌),请使用此名称。有关更多信息,请参阅 Kiali 令牌身份验证常见问题解答

Jaeger

我们的 Istio 安装程序包括一个快速入门的 All-in-One 安装 Jaeger,,这是一个用于跟踪分布式系统的工具。

请注意,这不是 Jaeger 的生产合格部署。此部署使用内存存储组件,而建议在生产中使用持久存储组件。有关您可能需要的部署策略的更多信息,请参阅 Jaeger 文档。

先决条件

在启用 Istio 之前,我们建议您确认您的 Rancher 工作节点具有足够的 处理器和内存 以运行 Istio 的所有组件。

如果您在 RKE2 集群上安装 Istio,则需要一些额外的步骤。有关详细信息,请参见 本节。

设置指南

请参阅 设置指南 以获取有关如何设置 Istio 并在项目中使用它的说明。

去除 Istio

要从集群、名称空间或工作负载中去除 Istio 组件,请参阅 卸载 Istio 部分。

访问可视化

默认情况下,只有集群管理员可以访问 Kiali。有关如何允许管理员、编辑或查看角色访问它们的说明,请参见 本节

对于版本 103.1.0+up1.19.6`及更高版本的 Istio 安装,Kiali 使用令牌值作为其身份验证策略。Rancher 中 Kiali 服务帐户的名称是 `kiali。如果您正在编写需要输入 Kiali 服务帐户名称的命令(例如,如果您尝试生成或检索会话令牌),请使用此名称。有关更多信息,请参阅 Kiali 令牌身份验证常见问题解答

在集群中设置 Istio 后,Grafana、Prometheus 和 Kiali 可以在 Rancher UI 中使用。

要访问Grafana和Prometheus可视化,

  1. 在左上角,单击*☰ > 集群管理*。

  2. 在*集群*页面上,转到您想查看可视化的集群,然后单击*探索*。

  3. 在左侧导航栏中,单击*监控*。

  4. 单击*Grafana*或其他任何仪表板。

要访问Kiali可视化,

  1. 在左上角,单击*☰ > 集群管理*。

  2. 在*集群*页面上,转到您想查看Kiali的集群,然后单击*探索*。

  3. 在左侧导航栏中,单击*Istio*。

  4. 单击*Kiali*。在这里,您可以访问*流量图*选项卡或*流量指标*选项卡,以查看网络可视化和指标。

默认情况下,所有名称空间将被 Prometheus 采集,并使数据可用于 Kiali 图表。如果您希望使用不同的配置进行Prometheus数据抓取,请参考选择器/抓取配置设置

您对可视化的访问取决于您的角色。Grafana 和 Prometheus 仅对`cluster-admin`角色可用。Kiali UI 默认仅对`cluster-admin`可用,但`cluster-admin`可以通过编辑 Istio 的 values.yaml 允许其他角色访问。

体系结构

Istio 安装了一个服务网格,使用 Envoy 侧车代理来拦截每个工作负载的流量。这些侧车拦截并管理服务到服务的通信,允许对集群内的流量进行细粒度的观察和控制。

只有注入了 Istio 侧车的工作负载才能被 Istio 跟踪和控制。

当名称空间启用 Istio 时,在该名称空间中部署的新工作负载将自动具有 Istio 侧车。您需要手动在现有工作负载中启用 Istio。

有关 Istio 侧车的更多信息,请参考 Istio 侧车注入文档,有关 Istio 架构的更多信息,请参考 Istio 架构文档

多个入口

默认情况下,每个 Rancher 提供的集群都有一个 NGINX 入口控制器,允许流量进入集群。Istio 还默认在`istio-system`名称空间中安装一个入口网关。 结果是您的集群将有两个入口。

在启用 Istio 的集群中

可以通过 覆盖文件 启用额外的 Istio 入口网关。

出口支持

默认情况下,Egress 网关是禁用的,但可以通过 values.yaml 或通过 覆盖文件 在安装或升级时启用。

在 SUSE® Rancher Prime: RKE2 集群上安装 Istio 的附加步骤

要在 RKE2 集群上安装 Istio,请按照 本节 中的步骤进行操作。

在隔离的环境中升级 Istio

Istio pod 安全策略现在默认启用。在 rancher-istio 图表中添加了一个新值 installer.releaseMirror.enabled,以启用和禁用支持隔离的升级的服务器。请注意,installer.releaseMirror.enabled 默认设置为 false。在安装或升级时,您可以根据需要设置此值。按照以下步骤执行操作:

  1. 在 Rancher UI 中提供一个隔离的 Rancher 实例和一个隔离的自定义集群。

  2. 在集群中安装监控:集群浏览器 -> 应用程序与市场 -> 图表 -> 监控

  3. 将所有所需的 Istio 镜像拉取到您将在隔离的环境中使用的私有注册表中。

  4. 在集群中安装 Istio:集群浏览器 -> 应用程序与市场 -> 图表 -> Istio

您可以在全新安装的 Istio 上启用 JaegerKiali。为确保 Jaeger 和 Kiali 正常工作,在安装期间,请在 values.yaml 中将 installer.releaseMirror.enabled 设置为 true

  1. 升级 Istio 安装。

如果您还没有,请将 installer.releaseMirror.enabled=true 设置为升级 Istio。