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
Сетка учитывает
Настройка нескольких конечных точек для одной службы не идеальна, поскольку мне нужно установить разные заголовки для каждой конечной точки.