我正在尝试在Kubernetes集群中使用Istio实现某种流量路由。
情况如下:
(客户服务)=>(首选项服务)=>(推荐服务),它具有两个版本:v1和v2。
我想使用一个自定义标头,例如来自Istio VirtualService的X-Svc-Env
,并通过此标头指定我要点击的推荐服务的版本。
VirtualService的配置如下:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: recommendation
namespace: online
spec:
hosts:
- recommendation
http:
- match:
- headers:
x-svc-env:
regex: v2
route:
- destination:
host: recommendation
subset: version-v2
- route:
- destination:
host: recommendation
subset: version-v1
此外,正在使用的DestinationRule是以下内容:
kind: DestinationRule
metadata:
name: recommendation
namespace: online
spec:
host: recommendation
subsets:
- labels:
version: v1
name: version-v1
- labels:
version: v2
name: version-v2
嗯...这不起作用,因为以某种方式,我的自定义标头没有通过Envoy代理传播(我想)。
我应该提一下,如果我使用的是众所周知的HTTP标头,例如:baggage-user-agent(这是OpenTracing规范中的User-Agent标头,那么一切进展都很好)。
Tx!