knative:基于自定义标头的路由?

时间:2020-08-27 12:13:06

标签: knative knative-serving

我们可以创建一个具有两个修订版本的knative服务,然后我们可以像这样配置流量。

 traffic:
  - latestRevision: false
    percent: 100
    revisionName: header-v1
  - latestRevision: false
    percent: 0
    revisionName: header-v2
    tag: v2

我们可以使用标头“ Knative-Serving-Tag:v2”路由到标头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

主机不能与前一个主机相同,否则将无效。我们不想更改主机,我们只想路由自定义标头。有什么更好的方法呢?预先感谢。

1 个答案:

答案 0 :(得分:0)

我不认为Knative Serving不以您想要的方式支持这一点。

对此有一个未解决的问题:https://github.com/knative/serving/issues/4736。那里存在一些问题,尚未做出决定。

您使用VirtualService所做的是正确的配置,但是VirtualService将被调和并且您的更改将消失。因此,这不是一种选择。