Как устранить ошибку маршрутизации трафика Istio? - PullRequest
0 голосов
/ 19 ноября 2018

Для приведенных ниже файлов ISTIO показывает вывод только в первом приложении v1.Если я изменю версию v1, то выход изменится.Так что трафик вообще не переходит на другую версию.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: sampleweb
  namespace: default
spec:
  hosts:
  - "web.xyz.com"
  gateways:
  - http-gateway
  http:
  - route:
    - destination:
        port:
          number: 8080
        host: web
        subset: v1
      weight: 30
  - route:
    - destination:
        port:
          number: 8080
        host: web
        subset: v2
      weight: 30
  - route:
    - destination:
        port:
          number: 8080
        host: web
        subset: v3
      weight: 40

---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: samplewebdr
  namespace: default
spec:
  host: web
  subsets:
  - name: v1
    labels:
      app: web
      version: prod
  - name: v2
    labels:
      app: web
      version: baseline
  - name: v3
    labels:
      app: web
      version: canary
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL

Может кто-нибудь помочь с этим?

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Были некоторые проблемы с отступами.Я решил, ссылаясь на следующие ссылки

https://raw.githubusercontent.com/istio/istio/release-1.0/samples/bookinfo/networking/destination-rule-all-mtls.yaml

0 голосов
/ 20 ноября 2018

Ваша проблема в том, что вы создали VirtualService с 3 правилами. Поэтому первое правило, которое не имеет конкретных критериев соответствия, всегда вызывается. Когда у вас есть несколько правил в VirtualService, вы должны быть осторожны, чтобы правильно их упорядочить, как описано здесь .

Тем не менее, в вашем случае вам действительно не нужно несколько правил, а скорее одно правило с несколькими взвешенными адресатами, например:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: sampleweb
  namespace: default
spec:
  hosts:
  - "web.xyz.com"
  gateways:
  - http-gateway
  http:
  - route:
    - destination:
        port:
          number: 8080
        host: web
        subset: v1
      weight: 30
    - destination:
        port:
         number: 8080
        host: web
        subset: v2
      weight: 30
    - destination:
        port:
          number: 8080
        host: web
        subset: v3
      weight: 40

Кстати, хотя это и безопасно, вам не нужно включать метку app: web в свои подмножества DestinationRule. Вам нужны только метки, которые однозначно определяют разницу между подмножествами веб-службы.

0 голосов
/ 19 ноября 2018

Я думаю, что проблема в том, что для всех версий у вас одна и та же метка app: web, поэтому istio направляет трафик на модули с этими метками, они просто оказались одинаковыми. Вам нужно указать разные метки для разных версий, например vor v2, метка version: v1, для v2 - version: v2, и вам также нужно создать стручки с этими метками.

...