Как использовать OR logi c в точном совпадении заголовка виртуальной службы istio? - PullRequest
1 голос
/ 07 мая 2020

У меня работают две службы и 4 разных заголовка. Я хочу направлять запросы с заголовками a и c одной службе и b и d другой службе. Как лучше всего достичь этого в манифестах виртуальных сервисов?

Ответы [ 2 ]

0 голосов
/ 07 июня 2020

Я нашел чистое решение использования regex вместо exact, которое позволяет нам отправлять запросы в один и тот же пункт назначения для разных заголовков, не упоминая один и тот же пункт назначения маршрута несколько раз в файле манифеста.

0 голосов
/ 07 мая 2020

Насколько мне известно, в виртуальной службе 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 
...