Istio: Как исключить неработоспособное место назначения из VirtualService?

Я пытаюсь настроить балансировку нагрузки и аварийное переключение для внешних служб. Каждой конечной точке HTTP для службы нужны свои собственные заголовки.

Я создал виртуальный сервис с двумя пунктами назначения:

      apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: test-external
spec:
  hosts:
  - test-external.com
  http:
  - headers:
      request:
        set:
          test: "true"
    route:
    - destination:
        host: "201.returnco.de"
      weight: 50
      headers:
        request:
          set:
            Host: "201.returnco.de"
            api-key: "xxxxxxxxxx"
    - destination:
        host: "501.returnco.de"
      weight: 50
      headers:
        request:
          set:
            Host: "501.returnco.de"
            api-key: "yyyyyyyyyy"
    retries: {}

Хосты и являются внешними службами, поэтому я создал для них запись службы.

      apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: test-external
spec:
  hosts:
  - test-external.com
  - 201.returnco.de
  - 501.returnco.de
  location: MESH_EXTERNAL
  ports:
  - name: http
    number: 80
    protocol: HTTP
  resolution: DNS

Я хочу направлять запросы только в файлы . Запросы не должны перенаправляться на хост, который возвращает код состояния 5xx. В этом случае всегда возвращается код состояния 5xx, поэтому он считается неработоспособным.

Как мне настроить сетку?


Я попытался создать следующее правило назначения, но оно не работает.

      apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: test-external
spec:
  host: "*.returnco.de"
  trafficPolicy:
    outlierDetection:
      baseEjectionTime: 1m
      consecutive5xxErrors: 1
      consecutiveGatewayErrors: 1
      interval: 15s
      maxEjectionPercent: 100

Сетка учитываети как две отдельные услуги. После неработоспособной конечной точки для узлавытесняется, прокси-сервер Istio возвращает ошибку 503 для запросов, поскольку нет работоспособных конечных точек.

Настройка нескольких конечных точек для одной службы не идеальна, поскольку мне нужно установить разные заголовки для каждой конечной точки.

0 ответов

Другие вопросы по тегам