今天我们延续玩转Istio 1.5前两篇文章,开始利用Istio来实现A/B测试,以及金丝雀发布。Istio 1.5开始,Pilot作为独立组件的所有功能都纳入到istiod,所以在1.5以及之后的版本用于流量管理的核心组件就是istiod,它管理和配置部署在特定Istio服务网格中的所有Envoy Proxy实例。它允许用户指定规则来在Envoy Proxy之间路由流量,这些代理作为Sidecar运行到网格中的每个服务。每个服务由运行在pods、容器、vm等上的任意数量的实例组成。每个服务可以有任意数量的版本(即服务子集)。可以有不同的服务实例的子集运行应用程序二进制文件的不同变形。这些变形可以是不同的API版本,也可以是对相同服务的迭代更改,部署在不同的环境中(prod、staging、dev等)。istiod将高级规则转换为低级配置,并将此配置分发给Envoy实例。
istiod使用三种类型的配置资源来管理其服务网格中的流量: 虚拟服务(Virtual Services)、目标规则(Destination Rules)和服务条目(Service Entries)。
虚拟服务定义了一组在寻址主机时应用的流量路由规则。每个路由规则为特定协议的流量定义匹配标准。如果流量匹配,则将其发送到服务注册中心中定义的指定目标服务(或其子集或版本)。
目标规则定义了在发生路由后应用于服务的流量的策略。这些策略指定负载均衡的配置、sidecar中的连接池大小以及用于从负载均衡池中检测和驱逐不健康主机的离群点检测设置。在虚拟服务规则中引用的任何目标主机和子集都必须在相应的目标规则中定义,并应用于流量的“真实”目标地址。
服务条目可以将条目添加到 Istio 内部维护的服务注册表中。添加服务条目后,Envoy 代理可以将流量发送到该服务,就好像该服务条目是网格中的服务一样。通过配置服务条目,可以管理在网格外部运行的服务的流量。
如果之前的IBM Kubernetes和应用的环境还在,那就非常方便了,如果没有,请先参考前两篇文章安装IKS及其组件istio 1.5,启用Kiali,安装Guestbook v1和v2
https://blog.csdn.net/ox821110/article/details/106997407
https://blog.csdn.net/ox821110/article/details/107005109
我们要先下载练习的资料:git clone https://github.com/IBM/istio101.git
默认情况下,部署在服务网格上的组件不会在集群外部公开,通过在每个服务上创建外部负载均衡器或nodeport来提供对单个服务的外部访问。
把G