Istio traffi c маршрутизация на основе пользовательских заголовков - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь реализовать какую-то трафиковую c маршрутизацию с использованием Istio в кластере Kubernetes.

Ситуация следующая:

(обслуживание клиентов) => (служба предпочтений) => (служба рекомендаций), которая имеет две версии: v1 и v2.

Я хочу использовать пользовательский заголовок, например X-Svc-Env из Istio VirtualService, и указать через этот заголовок версию службы рекомендаций, которую я хочу использовать.

Конфигурация для VirtualService следующая:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: recommendation
  namespace: online
spec:
  hosts:
  - recommendation
  http:
  - match:
    - headers:
        x-svc-env:
          regex: v2
    route:
    - destination:
        host: recommendation
        subset: version-v2
  - route:
    - destination:
        host: recommendation
        subset: version-v1

Кроме того, используется следующее DestinationRule:

kind: DestinationRule
metadata:
  name: recommendation
  namespace: online
spec:
  host: recommendation
  subsets:
  - labels:
      version: v1
    name: version-v1
  - labels:
      version: v2
    name: version-v2

Хорошо .. . это не работает, потому что каким-то образом мой пользовательский заголовок не распространяется через Envoy Proxy (я полагаю).

Я должен упомянуть, что если я использую известный заголовок HTTP, например: baggage-user-agent (который является заголовком User-Agent из спецификации OpenTracing, все идет хорошо).

Tx!

...