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: v2

1.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: vip

1.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: v1

1.2 操作注意事项

  • 多匹配规则并行时,按配置顺序优先匹配,建议将精确匹配放在前面,避免前缀/正则匹配覆盖后续规则。

  • queryParams仅支持精确匹配和正则匹配,不支持模糊前缀/后缀匹配,需明确参数值规则,避免匹配范围过大。

  • 请求方法匹配需使用大写HTTP方法名(GET、POST等),小写会导致匹配失效,可结合其他规则实现多维度精准匹配。

  • 多维度匹配规则(如路径+请求头+参数+方法)可组合使用,仅当所有条件均满足时,流量才会被匹配。

作者:叶奕珺  创建时间:2026-01-23 14:36
最后编辑:叶奕珺  更新时间:2026-01-30 18:08