Этот VirtualService сам по себе не будет работать, если у вас нет DestinationRule
для определения ваших подмножеств (версий).
Я продемонстрирую, как это должно быть сделано с упакованным образцом HelloWorld.с выпуском 0.8:
Шаг 1: Развертывание samples/helloworld/helloworld.yaml
Шаг 2: Определение DestinationRule
для двух доступных версий:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: helloworld
spec:
host: helloworld
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
Шаг 3: Заменить значение по умолчанию VirtualService
на значение, соответствующее атрибуту заголовка для маршрутизации:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: helloworld
spec:
hosts:
- "*"
gateways:
- helloworld-gateway
http:
- match:
- headers:
foo:
exact: bar
route:
- destination:
host: helloworld
subset: v2
- route:
- destination:
host: helloworld
subset: v1
Шаг 4: Проверьте это: