Istio - взвешенная маршрутизация для TLS-маршрутов - PullRequest
2 голосов
/ 11 июля 2020

У нас есть два микросервиса A и B. A вызывает B через побочный автомобиль istio-proxy.

Мы создали виртуальный сервис. См. Ниже yaml

После создания виртуальной службы, когда мы проверяем маршруты в модуле A с помощью этой команды istioctl proxy-config routes a-75768cc7bc-ghzsr -o json, мы НЕ видим взвешенные маршруты

Если мы заменим tls на http, добавляются взвешенные маршруты. Можем ли мы использовать взвешенные маршруты с tls?

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: b
  namespace: default  
spec:
  hosts:
  - b
  tls:
  - match:
    - port: 443
    route:
    - destination:
        host: b
        subset: v1
      weight: 50
    - destination:
        host: b
        subset: v2
      weight: 50

Добавление определения службы

apiVersion: v1
kind: Service
metadata:          
 labels:        
  svc: b
 name: b
 namespace: default      
spec:
  clusterIP: x.x.x.x
  ports:
  - name: https-b
    port: 443
    protocol: TCP
    targetPort: 8080
  selector:
    svc: b
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

Правило добавления пункта назначения,

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:  
  name: b
  namespace: default
spec:
  host: b
  subsets:
  - labels:
      version: v1
    name: v1
  - labels:
      version: v2
    name: v2

1 Ответ

4 голосов
/ 11 июля 2020

Возможно ли, что определение службы имеет имя порта с http-service-a?

Из Документация VirtualService , HTTP и TLS имеют разные значения c.

http

HTTP-маршруты будут применены к сервисным портам платформы с именами 'http -' / 'http2 -' / 'grp c - *', портам шлюза с протоколом HTTP / HTTP2 / GRPC / TLS-terminated-HTTPS и порты входа в службы с использованием протоколов HTTP / HTTP2 / GRP C.

tls

Маршруты TLS будут применяться к портам служб платформы с именами 'https-', 'tls-', незавершенные порты шлюза, использующие протоколы HTTPS / TLS (т. е. с «сквозным» режимом TLS) и порты входа в службы, использующие протоколы HTTPS / TLS.

С учетом вышеизложенного разница, это может объяснить различное поведение.

Какую версию Istio вы используете? Было бы хорошо увидеть определения K8s.

...