该任务展示了如何路由请求,来动态的到一个微服务的多个版本。
destionation rule
,virtual service
和subnet
.istio Bookinfo
案例包含4个微服务,其中reviews
有三个不同的版本。要说明这导致的问题,在浏览器中访问Bookinfo应用程序的/productpage并刷新几次。你会注意到,有时书评输出包含星级评级,有时不包含。这是因为如果没有显式的默认服务版本来路由,Istio就会以循环的方式将请求路由到所有可用的版本。
此任务的初始目标是应用将所有流量路由到微服务的v1(版本1)的规则。稍后,您将根据HTTP请求头的值将规则应用于路由流量。
要仅路由到一个版本,需要应用虚拟服务来设置微服务的默认版本。在这种情况下,虚拟服务将把所有流量路由到每个微服务的v1。
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
$ kubectl get destinationrules -o yaml
$ kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
因为配置传播最终是一致的,所以请等待几秒钟,等待虚拟服务生效。
$ kubectl get virtualservices -o yaml
$ kubectl get destinationrules -o yaml
测试结果如下:
接下来,您将更改路由配置,以便将来自特定用户的所有流量路由到特定的服务版本。在本例中,来自一个名为Jason的用户的所有流量将被路由到reviews:v2
。
$ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
$ kubectl get virtualservice reviews -o yaml
在该任务中,刚开始发送100%的流量到Bookinfo中的每个服务,然后我们设置了基于end-user
报头来发送流量到reviews的v2版本。
$ kubectl delete -f samples/bookinfo/networking/virtual-service-all-v1.yaml
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。