Возможна ли внутренняя маршрутизация ISTIO c с пользовательским шлюзом? - PullRequest
0 голосов
/ 11 февраля 2020

Возможен ли внутренний трафик ISTIO c маршрутизация на разные версии, даже если я использую пользовательские шлюзы? (Azure Шлюз приложения). Ниже мой случай использования. У меня есть две разные версии развертываний (Kubernetes) с метками app:myapp & version: v1 и version: v2 [метка v1 для одного развертывания и метка v2 для другого]. Трафик c в настоящее время равномерно распределен между этими двумя, и то же самое можно увидеть на панели инструментов kiali. Я хочу направить трафик c только на v2. Ниже приведены мои виртуальные правила обслуживания и назначения.

ВИРТУАЛЬНАЯ СЛУЖБА:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvirtualservice
  namespace: mynamespace # Use same namespace with backend service
spec:
  hosts:
  - myservice.namespace.svc.cluster.local
  ingress:
  - appgw # define ingress name
  http:
  - match:
    - uri:
        prefix: "/"
    route:
    - destination:
        port:
          number: 80 # Backend service port
        host: myservice.namespace.svc.cluster.local # Backend service name
        subset: v2

ПРАВИЛА НАЗНАЧЕНИЯ:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mydestrule
spec:
  host: myservice.namespace.svc.cluster.local
  subsets:
  - name: v2
    labels:
      version: v2

В данный момент на панели инструментов kiali тоже моя azure входной шлюз отображается как «неизвестный» ресурс.

1 Ответ

1 голос
/ 14 февраля 2020

Если я правильно вижу, вам не хватает селектора поднабора в пункте назначения VirtualService. Если вы настроите VirtualService таким образом, он должен работать лучше:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvirtualservice
  namespace: mynamespace # Use same namespace with backend service
spec:
  hosts:
  - myservice.namespace.svc.cluster.local
  ingress:
  - appgw # define ingress name
  http:
  - match:
    - uri:
        prefix: "/"
    route:
    - destination:
        port:
          number: 80
        host: myservice.namespace.svc.cluster.local 
        subset: v2 # <- Route to the subset v2 and enable endpoint select by label

См. https://istio.io/docs/reference/config/networking/virtual-service/#Destination

...