Knative: маршрутизация на основе настраиваемых заголовков?

Мы можем создать 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

Хосты не могут быть такими же, как у предыдущего, иначе это не вступит в силу. Мы не хотим менять хост, мы просто хотим выполнить маршрутизацию через настраиваемый заголовок. Как лучше это сделать? Заранее спасибо.


person julie    schedule 27.08.2020    source источник


Ответы (1)


Я не думаю, что Knative Serving не поддерживает это так, как вы хотели.

Для этого есть открытая проблема: https://github.com/knative/serving/issues/4736. Там есть некоторые опасения, но решение пока не принято.

То, что вы делаете с VirtualService, является правильной конфигурацией, но VirtualService будет согласовано, и ваши изменения исчезнут. Так что это не вариант.

person Ali Ok    schedule 27.08.2020
comment
Спасибо, это именно то, о чем я хочу спросить. Кстати, у меня еще один вопрос. Поддерживает ли knative архитектуру ARM? - person julie; 28.08.2020
comment
Если Kubernetes поддерживает архитектуру ARM, Knative тоже. Лично я ничего об этом не знаю. - person Ali Ok; 29.08.2020