将上述 YAML 保存为 customers.yaml
,用 kubectl apply -f customers.yaml
创建资源 。
为了确保一切部署和工作正常,打开 GATEWAY_URL
,并确保我们从 Customers v1 获得响应 。
我们将更新 Customers 的 VirtualService,并更新流量在两个版本的 Customers 服务之间的路由 。
让我们看一下 YAML,如果请求中包含一个 header user: debug
,就把流量路由到 Customers v2 。如果没有设置这个 header,我们就被路由到 Customers v1 。
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata:name: customers spec:hosts:- 'customers.default.svc.cluster.local'http:- match:- headers:user:exact: debugroute:- destination:host: customers.default.svc.cluster.localport:number: 80subset: v2- route:- destination:host: customers.default.svc.cluster.localport:number: 80subset: v1
将上述 YAML 保存为 customers-vs.yaml
,然后用 kubectl apply -f customers-vs.yaml
更新 VirtualService 。
如果我们不提供端口号,VirtualService 中的目的地也会工作 。这是因为该服务只定义了一个端口 。如果我们打开
GATEWAY_URL
,我们仍然应该得到来自 Customers v1的响应 。如果我们在请求中添加 header user: debug
,我们会注意到customers 的响应是来自 Customers v2 。我们可以使用 ModHeader 扩展来修改浏览器中的头信息 。另外,我们也可以使用 cURL , 像这样把头信息添加到请求中 。
$ curl -H "user: debug" http://GATEWAY_URL/ ... <th class="px-4 py-2">CITY</th> <th class="px-4 py-2">NAME</th> ...
如果我们看一下回复,你会注意到有两栏——CITY 和 NAME 。7.2 清理删除 Deployment、Service、VirtualService、DestinationRule 和 Gateway:
kubectl delete deploy web-frontend customers-{v1,v2} kubectl delete svc customers web-frontend kubectl delete vs customers web-frontend kubectl delete dr customers kubectl delete gateway gateway
推荐阅读
- Git 02: git管理码云代码仓库 + IDEA集成使用git
- node.js:《接口实现文件的上传和下载》
- Kotlin Mockito使用方法
- 之五 2流高手速成记:Springboot整合Shiro实现安全管理
- <五>掌握左值引用和初识右值引用
- 二 Istio:在Kubernetes(k8s)集群上安装部署istio1.14
- 四十八 SpringCloud微服务实战——搭建企业级开发框架:【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架
- Spring Retry 重试
- C#-多线程的使用Tread
- 我国哪座山被称为五岳之首?支付宝