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

设置 Istio 的流量管理组件

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

Istio 流量管理的一个主要优势是它允许动态请求路由。动态请求路由的一些常见应用包括金丝雀部署和蓝绿部署。Istio 流量管理中的两个关键资源是_虚拟服务_和_目标规则_。

  • 虚拟服务拦截并引导流量到您的 Kubernetes 服务,允许您将请求的流量百分比分配到不同的服务。您可以使用它们定义一组路由规则,以便在访问主机时应用。

  • 目标规则作为唯一依据,指明哪些服务版本可接收来自虚拟服务的流量。您可以使用这些资源来定义在流量路由完成后应用于目标服务的策略。

本节描述如何添加一个示例虚拟服务,该服务对应于示例 BookInfo 应用中的`reviews`微服务。该服务的目的是在`reviews`服务的两个版本之间分配流量。

在这个示例中,我们将流量引导到`reviews`服务,并拦截它,使得50%的流量发送到`v1`服务,50%的流量发送到`v2`。

在部署此虚拟服务后,我们将生成流量,并从 Kiali 可视化中看到流量在两个版本的服务之间均匀路由。

要部署`reviews`服务的虚拟服务和目标规则,

  1. 单击 ☰ > 集群管理

  2. 请前往安装了 Istio 的集群并点击*探索*。

  3. 在安装了 Istio 的集群中,点击左侧导航栏中的menu:Istio[目标规则]。

  4. 单击*创建*。

  5. 复制并粘贴下面提供的DestinationRule yaml。

  6. 单击*创建*。

  7. 点击*以YAML格式编辑*并使用以下配置:

     apiVersion: networking.istio.io/v1alpha3
     kind: DestinationRule
     metadata:
       name: reviews
     spec:
       host: reviews
       subsets:
       - name: v1
         labels:
           version: v1
       - name: v2
         labels:
           version: v2
       - name: v3
         labels:
           version: v3
  8. 单击*创建*。

然后部署提供流量路由的虚拟服务,该服务利用目标规则:

  1. 点击侧边导航栏中的*虚拟服务*。

  2. 点击*从Yaml创建*。

  3. 复制并粘贴下面提供的 VirtualService yaml。

  4. 单击*创建*。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50
---

*结果:*当您向此服务生成流量时(例如,通过刷新入口网关 URL),Kiali 流量图将反映 reviews 服务的流量在 v1v3 之间均匀分配。