virtualservice
影响流量路由的配置。
术语:
service是绑定到service registry中唯一名称的应用程序行为单元。服务由在Pod,容器,VM等上运行的工作负载实例实现的多个网络端点组成。
Service versions(也称为subsets)-在持续部署方案中,对于给定的服务,应用程序可能会运行不同版本对应不同子集。这些变体不一定是不同的API版本。它们可能是对同一服务的迭代更改,部署在不同的环境(prod, staging, dev等)中。发生这种情况的常见方案包括A/B测试,金丝雀部署等。可以根据各种标准(header,url等)和/或通过分配给每个版本的权重来决定特定版本的选择。每个服务都有一个包含所有实例的默认版本。
source-调用服务的下游客户端。
host-客户端尝试连接服务时使用的地址。
Access model-应用程序仅寻址目标服务(Host),而无需了解各个服务版本(子集)。版本的实际选择由代理/sidecar决定,从而使应用程序代码能够与依赖服务的发展脱钩。
VirtualService定义了一组在寻址Host时要应用的流量路由规则。每个路由规则为特定协议的流量定义匹配条件。如果流量匹配,则将其发送到registry中定义的命名目标服务(或其子集/版本)。
流量Source也可以在路由规则中进行匹配。这允许针对特定客户端上下文自定义路由。
在Kubernetes上的以下示例默认情况下将所有HTTP流量路由到带有标签版本:"version: v1"的reviews服务的pod。另外,路径以/wpcatalog/或/consumercatalog/开头的HTTP请求将被重写为/newcatalog并发送到带有"version: v2"标签的Pod。
参考必须在相应的DestinationRule中声明的命名服务子集来标识路由目标的子集/版本
Last updated