使用服务网格实现微服务的多版本部署与流量路由
1. 虚拟服务与目标规则基础
在微服务架构中,虚拟服务和目标规则是实现流量管理的重要工具。以下是一个虚拟服务中目标配置的示例:
- destination:
host: {
{ $name }}
subset: new
weight: 0
从这个模板可以了解到:
- 范围指令会遍历 virtualServices
变量中定义的元素。
- 清单规范部分的 hosts
字段用于指定此虚拟服务将应用到的 Kubernetes 服务名称。
- 在 http
部分,声明了三个路由目标:
- 一条路由匹配金丝雀测试用户的 HTTP 头 X-group
,其值设为 test
,此路由始终将请求发送到新子集。
- 一条路由目标针对旧子集,另一条针对新子集。
- 权重以百分比形式指定,且权重总和始终为 100,初始时所有流量都路由到旧子集。
为了基于 HTTP 头进行路由,将金丝雀测试用户路由到新版本, product-composite
微服务已更新以转发 X-group
HTTP 头。
2. 部署与服务调整
为了让目标规则能够根据 Pod 的标签识别其版本,在通用 Helm 图表的部署模板 _