невозможно использовать «Разделение больших виртуальных служб и правил назначения на несколько ресурсов» - PullRequest
0 голосов
/ 25 марта 2020

istio document dercribe "Разделение больших виртуальных сервисов и правил назначения на несколько ресурсов"

https://istio.io/docs/ops/best-practices/traffic-management/

это мой виртуальный сервис yaml ,

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: project-b
  namespace: test1
spec:
  hosts:
  - project-b.test1.svc.cluster.local
  http:
  - match:
    - headers:
        route-namespace:
          exact: "test1"
    route:
    - destination:
        host: project-b.test1.svc.cluster.local


---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: project-b-test2
  namespace: test1
spec:
  hosts:
  - project-b.test1.svc.cluster.local
  http:
  - match:
    - headers:
        route-namespace:
          exact: "test2"
    route:
    - destination:
        host: project-b.test2.svc.cluster.local

введите описание изображения здесь доступна только одна виртуальная услуга,

1 Ответ

0 голосов
/ 25 марта 2020

Да, это ожидаемое поведение.

Согласно документации istio :

В ситуациях, когда неудобно определять полный набор правил маршрута или политики для конкретного хоста в одном ресурсе VirtualService или DestinationRule, может быть предпочтительным, чтобы постепенно указывать конфигурацию для хоста в нескольких ресурсах. Пилот объединит такие правила назначения и объединит такие виртуальные службы, если они связаны со шлюзом.


Когда второй и последующие VirtualService для применяется существующий хост, istio-pilot объединит дополнительные правила маршрута с существующей конфигурацией хоста. Однако есть несколько предостережений с этой функцией, которые необходимо тщательно учитывать при ее использовании.

  1. Хотя порядок оценки для правил в любом данном источнике VirtualService будет сохранен, перекрестный ресурс заказ не определен. Другими словами, не существует гарантированного порядка оценки для правил в конфигурациях фрагментов, поэтому он будет иметь предсказуемое поведение только при отсутствии конфликтующих правил или зависимости порядка между правилами между фрагментами.
  2. Должен быть только один Правило «поймать все» (т. Е. Правило, которое соответствует любому пути или заголовку запроса) во фрагментах. Все такие «универсальные» правила будут перенесены в конец списка в объединенной конфигурации, но, поскольку они перехватывают все запросы, то, что будет применено первым, по существу переопределит и отключит все остальные.
  3. A VirtualService может быть фрагментирован таким образом, только если он привязан к шлюзу. Слияние хостов не поддерживается в колясках.
...