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-v1Service 的8080端口,响应也来自它; - 同时,同一份请求也会被镜像到
foo-v2Service 的8080端口,但foo-v2的响应会被丢弃。