1. 匹配规则配置
匹配规则用于精准筛选目标流量,支持基于请求路径、请求头、请求参数(queryParams)、请求方法(method)等多维度匹配,通过VirtualService资源配置实现。针对性管控特定流量时,需先通过匹配规则锁定目标范围,再执行路由、重写、故障注入等后续策略;无匹配规则时,策略将对关联服务的所有流量生效。

1.1 核心配置场景
1.1.1 路径匹配
针对特定URL路径的流量进行匹配,支持精确匹配、前缀匹配、后缀匹配三种方式:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: demo-service-vs
namespace: default # 对应业务Pod所在命名空间
spec:
hosts: # 目标服务名称(K8s Service名称)
- demo-service
http:
- match:
- uri:
exact: /api/v1/login # 精确匹配路径
- uri:
prefix: /api/v1/user # 前缀匹配路径(包含所有子路径)
- uri:
suffix: .json # 后缀匹配路径(所有.json结尾请求)
route:
- destination:
host: demo-service
subset: v1 # 对应DestinationRule定义的服务子集1.1.2 请求头匹配
基于请求头中的字段值匹配流量,适用于按客户端类型、版本等维度分流:
http:
- match:
- headers:
X-Client-Version: # 请求头名称
exact: "2.0" # 精确匹配头值
X-Env:
regex: "prod|pre" # 正则匹配头值(生产/预发环境)
route:
- destination:
host: demo-service
subset: v21.1.3 请求参数匹配(queryParams)
基于URL中的查询参数匹配流量,适用于按参数值分流、过滤特定请求等场景,支持精确匹配和正则匹配。
http:
- match:
- queryParams:
userType: # 请求参数名
exact: "vip" # 精确匹配参数值(例:/api/user?userType=vip)
page:
regex: "^[1-9]\\d*$" # 正则匹配参数值(正整数页码)
route:
- destination:
host: demo-service
subset: vip1.1.4 请求方法匹配(method)
基于HTTP请求方法(GET、POST、PUT、DELETE等)匹配流量,适用于按请求类型管控接口访问,可结合路径、参数等规则组合使用。
http:
- match:
- method:
exact: "POST" # 精确匹配POST方法
uri:
prefix: /api/submit # 结合路径匹配,精准锁定POST提交接口
route:
- destination:
host: demo-service
subset: v1
- match:
- method:
exact: "GET" # 匹配GET方法
uri:
prefix: /api/query
route:
- destination:
host: demo-service
subset: v11.2 操作注意事项
多匹配规则并行时,按配置顺序优先匹配,建议将精确匹配放在前面,避免前缀/正则匹配覆盖后续规则。
queryParams仅支持精确匹配和正则匹配,不支持模糊前缀/后缀匹配,需明确参数值规则,避免匹配范围过大。
请求方法匹配需使用大写HTTP方法名(GET、POST等),小写会导致匹配失效,可结合其他规则实现多维度精准匹配。
多维度匹配规则(如路径+请求头+参数+方法)可组合使用,仅当所有条件均满足时,流量才会被匹配。
作者:叶奕珺 创建时间:2026-01-23 14:36
最后编辑:叶奕珺 更新时间:2026-01-30 18:08
最后编辑:叶奕珺 更新时间:2026-01-30 18:08