Насколько мне известно, в виртуальной службе istio нет логических операторов.
Они доступны только в правилах и языке выражений микшера .
Как вы уже упомянули, единственный вариант - использовать один и тот же маршрут несколько раз.
Таким образом, виртуальная служба будет выглядеть так.
http:
- name: "a"
match:
- headers:
x-test:
exact: "a"
route:
- destination:
host: service_1.sample_namespace.svc.cluster.local
port:
number: 80
- name: "b"
match:
- headers:
x-test:
exact: "b"
route:
- destination:
host: service_1.sample_namespace.svc.cluster.local
port:
number: 80
- name: "c"
match:
- headers:
x-test:
exact: "c"
route:
- destination:
host: service_2.sample_namespace.svc.cluster.local
port:
number: 80
- name: "d"
match:
- headers:
x-test:
exact: "d"
route:
- destination:
host: service_2.sample_namespace.svc.cluster.local
port:
number: 80
Дополнительно info, я вижу, что у вас развернута виртуальная служба в пространстве имен sample_name, помните, что шлюз должен быть развернут в том же пространстве имен. Если это не так, добавьте его, как в примере ниже.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-gateway
namespace: some-config-namespace
Проверьте раздел spec.gateways
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo-Mongo
namespace: sample_namespace
spec:
gateways:
- some-config-namespace/my-gateway