【发布时间】:2018-08-10 07:01:14
【问题描述】:
我正在测试 Istio,目前我即将测试路由流量的“金丝雀”功能。
为了我的测试,我创建了一个由 5 个微服务(serviceA、serviceB、serviceC、serviceD、serviceE)组成的小型 servicemesh。每个人都可以呼叫其他人。我只是通过像 A,E,C,B,B,D 这样的路径,请求遵循这条路径。 为了从集群外部调用我的 servicemesh,我有一个 Nginx 入口控制器,其入口规则指向 serviceA pod
这工作正常。
我面临的问题涉及使用这样的自定义标头匹配的流量切换:
kind: VirtualService
metadata:
name: ServiceA
namespace: demo
labels:
app: demo
spec:
hosts:
- service-a
http:
- route:
- destination:
host: service-a
subset: v1
- match:
- headers:
x-internal-request:
exact: true
route:
- destination:
host: service-a
subset: v2
所以在这里,当我将自定义标头 x-internal-request 设置为 true 时,我想尝试将流量路由到 v2 版本的 ServiceA。
问题:
为了使用此功能,我的服务是否必须知道 x-internal-header 并且必须将其传递给请求中的下一个服务?或者他们不需要处理它,因为 Istio 为他们完成了这项工作?
为了使用这个功能,我需要使用 Istio Ingress Controller(带有 Istio 网关)而不是 Nginx Ingress Controller 吗?
今天,我正在使用 Nginx Ingress Controller 来公开我的一些服务。我们选择 Nginx 是因为它具有“外部授权”之类的功能,可以为我们节省大量工作,如果我们需要使用 Istio Ingress 控制器,我不确定它是否提供与 Nginx 相同的功能。
也许有一条我看不到的中间路径
感谢您的帮助
【问题讨论】:
标签: istio nginx-ingress