Skip to content

HTTP 请求镜像(Mirroring)

原文:https://gateway-api.sigs.k8s.io/guides/user-guides/http-request-mirroring/

HTTPRoute 资源 可以把请求镜像到多个后端。这对于"用线上流量测试新服务"非常有用。

被镜像的请求只会单独发送给某一个 backendRef 中指定的目的端点,并且 Gateway 必须忽略该后端返回的响应。

请求镜像在蓝绿发布场景下尤其好用——它能让你在完全不影响线上用户响应的前提下,评估新版本对应用性能的影响。

yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: http-filter-mirror
  labels:
    gateway: mirror-gateway
spec:
  parentRefs:
  - name: mirror-gateway
  hostnames:
  - mirror.example
  rules:
  - backendRefs:
    - name: foo-v1
      port: 8080
    filters:
    - type: RequestMirror
      requestMirror:
        backendRef:
          name: foo-v2
          port: 8080

在这个示例中:

  • 所有请求都会真正被路由到 foo-v1 Service 的 8080 端口,响应也来自它;
  • 同时,同一份请求也会被镜像到 foo-v2 Service 的 8080 端口,但 foo-v2 的响应会被丢弃

基于 MIT 协议发布