Traffic mirror
MeshHTTPRoute
can mirror a fraction of requests to another service.
Configuration
apiVersion: kuma.io/v1alpha1
kind: MeshHTTPRoute
metadata:
name: http-route-1
namespace: kuma-demo
labels:
kuma.io/mesh: default
spec:
targetRef:
kind: Dataplane
labels:
app: frontend
to:
- targetRef:
kind: MeshService
name: backend_kuma-demo_svc_3001
rules:
- matches:
- headers:
- type: Exact
name: mirror-this-request
value: 'true'
default:
filters:
- type: RequestMirror
requestMirror:
percentage: 30
backendRef:
kind: MeshServiceSubset
name: backend_kuma-demo_svc_3001
tags:
version: v1-experimental
backendRefs:
- kind: MeshService
name: backend_kuma-demo_svc_3001
apiVersion: kuma.io/v1alpha1
kind: MeshHTTPRoute
metadata:
name: http-route-1
namespace: kuma-demo
labels:
kuma.io/mesh: default
spec:
targetRef:
kind: Dataplane
labels:
app: frontend
to:
- targetRef:
kind: MeshService
name: backend
namespace: kuma-demo
sectionName: http
rules:
- matches:
- headers:
- type: Exact
name: mirror-this-request
value: 'true'
default:
filters:
- type: RequestMirror
requestMirror:
percentage: 30
backendRef:
kind: MeshService
name: backend-v1-experimental
namespace: kuma-demo
port: 3001
backendRefs:
- kind: MeshService
name: backend
namespace: kuma-demo
port: 3001
type: MeshHTTPRoute
name: http-route-1
mesh: default
spec:
targetRef:
kind: Dataplane
labels:
app: frontend
to:
- targetRef:
kind: MeshService
name: backend
rules:
- matches:
- headers:
- type: Exact
name: mirror-this-request
value: 'true'
default:
filters:
- type: RequestMirror
requestMirror:
percentage: 30
backendRef:
kind: MeshServiceSubset
name: backend
tags:
version: v1-experimental
backendRefs:
- kind: MeshService
name: backend
type: MeshHTTPRoute
name: http-route-1
mesh: default
spec:
targetRef:
kind: Dataplane
labels:
app: frontend
to:
- targetRef:
kind: MeshService
name: backend
sectionName: http
rules:
- matches:
- headers:
- type: Exact
name: mirror-this-request
value: 'true'
default:
filters:
- type: RequestMirror
requestMirror:
percentage: 30
backendRef:
kind: MeshService
name: backend-v1-experimental
port: 3001
backendRefs:
- kind: MeshService
name: backend
port: 3001
Please adjust konnect_mesh_control_plane.my_meshcontrolplane.id and konnect_mesh.my_mesh.name according to your current configuration.
resource "konnect_mesh_http_route" "http_route_1" {
provider = konnect-beta
type = "MeshHTTPRoute"
name = "http-route-1"
spec = {
target_ref = {
kind = "Dataplane"
labels = {
app = "frontend"
}
}
to = [
{
target_ref = {
kind = "MeshService"
name = "backend"
section_name = "http"
}
rules = [
{
matches = [
{
headers = [
{
type = "Exact"
name = "mirror-this-request"
value = "true"
}
]
}
]
default = {
filters = [
{
type = "RequestMirror"
request_mirror = {
percentage = "30"
backend_ref = {
kind = "MeshService"
name = "backend-v1-experimental"
port = "3001"
}
}
}
]
backend_refs = [
{
kind = "MeshService"
name = "backend"
port = "3001"
}
]
}
}
]
}
]
}
labels = {
"kuma.io/mesh" = konnect_mesh.my_mesh.name
}
cp_id = konnect_mesh_control_plane.my_meshcontrolplane.id
mesh = konnect_mesh.my_mesh.name
}