流量管理

在本章中,我们将开始使用 Istio 服务网格在服务之间进行流量路由。我们将学习如何设置一个 Ingress 资源以允许流量进入我们的集群,以及一个 Egress 资源以使流量流出集群。

使用流量路由,我们将学习如何部署新版本的服务,并在已发布的生产版本的服务旁边运行,而不干扰生产流量。随着两个服务版本的部署,我们将逐步发布(金丝雀发布)新版本,并开始将一定比例的传入流量路由到最新版本。

流量管理是 Isito 中的最基础功能,使用 Istio 的流量管理模型,本质上是将流量与基础设施扩容解耦,让运维人员可以通过 Pilot 指定流量遵循什么规则,而不是指定哪些 pod/VM 应该接收流量——Pilot 和智能 Envoy 代理会帮我们搞定。

所谓流量管理是指:

  • 控制服务之间的路由:通过在 VirtualService 中的规则条件匹配来设置路由,可以在服务间拆分流量。
  • 控制路由上流量的行为:设定好路由之后,就可以在路由上指定超时和重试机制,例如超时时间、重试次数等;做错误注入、设置断路器等。可以由 VirtualServiceDestinationRule 共同完成。
  • 显式地向网格中注册服务:显示地引入 Service Mesh 内部或外部的服务,纳入服务网格管理。由 ServiceEntry 实现。
  • 控制网格边缘的南北向流量:为了管理进入 Istio service mesh 的南北向入口流量,需要创建 Gateway 对象并与 VirtualService 绑定。

本章大纲