Мы можем создать Knative-сервис с двумя версиями, а затем настроить трафик таким образом.
traffic:
- latestRevision: false
percent: 100
revisionName: header-v1
- latestRevision: false
percent: 0
revisionName: header-v2
tag: v2
Мы можем использовать заголовок Knative-Serving-Tag: v2 для перехода к ревизии header-v2. Однако мы хотим перейти к конкретной ревизии, используя настраиваемый заголовок, например User: v2. Что нам делать? Мы попробовали какой-то метод. Сначала мы пытаемся отредактировать соответствующий виртуальный сервис, но новые правила будут автоматически удалены. Затем мы пытаемся добавить новый виртуальный сервис.
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: header-custom-ingress
namespace: default
spec:
gateways:
- knative-serving/knative-ingress-gateway
hosts:
- header-test.default.XXXXXXXXXXXXXXX.io
http:
- match:
- headers:
User:
exact: v2
retries: {}
rewrite:
authority: v2-header.default.XXXXXXXXXXXXXXX.io
route:
- destination:
host: istio-ingressgateway.istio-system.svc.cluster.local
port:
number: 80
weight: 100
Хосты не могут быть такими же, как у предыдущего, иначе это не вступит в силу. Мы не хотим менять хост, мы просто хотим выполнить маршрутизацию через настраиваемый заголовок. Как лучше это сделать? Заранее спасибо.