我们可以创建一个有两个版本的 knative 服务,然后我们可以像这样配置流量。
traffic:
- latestRevision: false
percent: 100
revisionName: header-v1
- latestRevision: false
percent: 0
revisionName: header-v2
tag: v2
我们可以使用 header“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
Hosts不能与之前的相同,否则不生效。我们不想更改主机,我们只想通过自定义标头进行路由。更好的方法是什么?预先感谢。
我不认为 Knative Serving 不能以您想要的方式支持这一点。
有一个未解决的问题:https://github.com/knative/serving/issues/4736。存在一些担忧,尚未做出决定。
您使用
VirtualService
所做的配置是正确的,但是 VirtualService
将得到协调,并且您的更改将消失。所以,这不是一个选择。