使用 Istio 进行流量镜像以在生产环境中进行测试
更安全、风险更低的部署和生产发布简介。
尝试枚举在非生产/测试环境中测试服务的各种测试用例组合可能是一项艰巨的任务。在某些情况下,您会发现为编目这些用例所付出的所有努力与实际生产用例并不匹配。理想情况下,我们可以使用实时生产用例和流量来帮助阐明我们可能在更人为构建的测试环境中错过的被测服务的各个功能区域。
Istio 可以在这里提供帮助。随着 Istio 0.5 的发布,Istio 可以镜像流量以帮助测试您的服务。您可以编写类似于以下内容的路由规则来启用流量镜像
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: mirror-traffic-to-httpbin-v2
spec:
destination:
name: httpbin
precedence: 11
route:
- labels:
version: v1
weight: 100
- labels:
version: v2
weight: 0
mirror:
name: httpbin
labels:
version: v2
这里需要注意几点
- 当流量被镜像到不同的服务时,这发生在请求的关键路径之外
- 对任何镜像流量的响应都会被忽略;流量被镜像为“即发即弃”
- 您需要使用 0 权重的路由来提示 Istio 在幕后创建正确的 Envoy 集群;这应该在将来的版本中得到解决。