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
Copied!
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
Copied!
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
Copied!
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
Copied!
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
}
Copied!
