Как упомянуто в комментариях oop, он хочет развернуть 2 приложения на странице продукта
- первый будет направлен только на просмотр v1
- второй маршрут только на просмотр v2
Итак, я сделал быстрое тестирование со страницы продукта из istio docs, и вам нужно настроить виртуальные службы и правила назначения, чтобы это произошло.
развертывания и службы
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/platform/kube/bookinfo.yaml
шлюз и виртуальная служба
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/networking/bookinfo-gateway.yaml
Как уже упоминалось здесь
Прежде чем вы сможете использовать Istio для управления маршрутизацией версий Bookinfo, вам нужно определить доступные версии, называемые подмножествами, в правилах назначения.
Если вы не включили взаимный TLS, выполните эту команду:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/networking/destination-rule-all.yaml
Если вы включили взаимный TLS, выполните эту команду:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/networking/destination-rule-all-mtls.yaml
Затем просто добавьте вашу виртуальную службу
Вы можете использовать v1 каждого микросервиса, как в этом примере * 104 3 * или просто отзывы v1.
Так что для каждого микросервиса использовать v1 было бы
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/networking/virtual-service-all-v1.yaml
Только для обзоров v1
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
И это все, что вы нужно сделать для первого приложения на странице продукта.
Второе приложение на странице продукта
Вы должны сделать то же самое со вторым приложением, единственное изменение здесь - виртуальная служба, соответствующая подмножеству v2. Конечно, если вы хотите развернуть оба из них, я предлагаю использовать 2 пространства имен и разделить их, изменить пространства имен в виртуальных службах, развертываниях, шлюзах и т. д. c.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v2
Заголовки
Как упомянуто в документации istio , вы можете использовать
Заголовок запроса -> правила манипуляции, применяемые перед отправкой запроса в службу назначения
ИЛИ
Заголовок ответа -> правила манипуляции, применяемые перед возвратом ответа вызывающему абоненту
Я не совсем уверен, что вы нужно, это пример ш Как добавить заголовок ответа к каждому запросу, вы можете добавить его в виртуальный сервис. Подробнее об этом в приведенном ниже примере ссылки.
РЕДАКТИРОВАТЬ
Я сделал эти виртуальные услуги на основе изображения, которое вы добавляете, поэтому каждый раз, если вы войдите как jason you, он перенаправит вас на продукт v2 и пересмотрит v2, я оставил оценки и подробности v1 по умолчанию.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: productpage
spec:
hosts:
- productpage
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: productpage
subset: v2
- route:
- destination:
host: productpage
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- match:
- headers:
end-user:
exact: jason
route:
- destination:
host: reviews
subset: v2
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: details
spec:
hosts:
- details
http:
- route:
- destination:
host: details
subset: v1
---