在istio里,通过虚拟服务(vs)与gateway的绑定,结合目标策略(distinationrule,DR)定义的规则,提供了从服务暴露到流量分配的实现,gateway比较简单,主要用于声明istio的ingress控制器,需要重点关注的是vs与dr进行流量的,而dr通常仅作负载均衡方式、连接池、tls、端口流量等等的规则性说明,与实际路由指向关系不大。所以个人认为,搞定了vs配置,基本上就可以满足大部分的路由需求。下面是关于vs的一些简单实践。供分享或指正。
vs可定义精确的匹配规则,目前有5类,包括http头(header),schema(http、https、ftp等),authority(匹配authority头),method(方法, 如get、post等),uri(匹配的url)。下面我们主要以header为案例展开讨论。
针对header,除了常规使用的destination外,vs还可以将请求进行header重写或重定向,例如我们希望把/v1改为/v2,可以采用rewrite字段,定义到/v2;或者利用redirect直接重定向到另外一个完全不同的服务,例如v1是customer服务,但可以在redirect指定hearer为hello的服务,重定向到uri为/hello的服务。留意,vs配置中,destination与redirect字段是相斥的,如果某个服务使用了redirect,就不需要设置destination。
vs配置中,在匹配时,可以使用and和or语义,这个在精确路由时非常有用,参考如下:
使用and语义:
http:
- match:
- uri:
prefix: /v1
headers:

本文介绍了Istio中虚拟服务(VS)与目标规则(DR)的使用,重点讲解VS如何通过精确匹配规则实现流量路由。VS支持基于HTTP头、URI、方法等多种条件的路由策略,包括重定向和重写。通过示例展示了如何配置VS进行header匹配,并通过kiali观察流量走向。理解VS配置对于掌握Istio的流量管理至关重要。
最低0.47元/天 解锁文章
108

被折叠的 条评论
为什么被折叠?



