Inbound circuit breaker subsets

I’m trying to create what are essentially quota buckets for different subsets. The idea is that for a given path A with identifying header H1, it will circuit break at a specific number of concurrent requests. For the same path A but a separate identifying header H2, it will circuit break at a different number of concurrent requests, and similar things for separate paths.

I tested using a config similar to the following, but it seems that istio (and maybe envoy) will only support a single inbound cluster for a given destination/port. Basically, I’m trying to figure out if this is even possible.

---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: service-buckets
  namespace: service
spec:
  exportTo:
  - .
  hosts:
  - service.service.svc.cluster.local
  http:
  - match:
    - ignoreUriCase: true
      uri:
        prefix: /path1
    route:
    - destination:
        host: service.service.svc.cluster.local
        subset: bucket-1
  - match:
    - ignoreUriCase: true
      uri:
        prefix: /path2
    route:
    - destination:
        host: service.service.svc.cluster.local
        subset: bucket-2
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: service-buckets
  namespace: service
spec:
  exportTo:
  - .
  host: service.service.svc.cluster.local
  subsets:
  - name: bucket-1
    trafficPolicy:
      connectionPool:
        http:
          http2MaxRequests: 10
  - name: bucket-2
    trafficPolicy:
      connectionPool:
        http:
          http2MaxRequests: 30

The resulting envoy configuration only contains circuit breaking for outbound traffic.

Looking at the way that inbound clusters are created, it doesn’t look like it’s currently possible: