我正在使用安装在kubernetes顶部的服务网格https://istio.io/。
假设,我已经创建了两个服务,即服务FOO和BOO:
现在FOO应该调用BOO。我的问题是:
如何在FOO中调用BOO?我必须到哪个地址在FOO服务中提供http客户端以调用BOO。我会吗必须为BOO创建虚拟服务? BOO不应为在kubernetes cluser之外可以访问。
当FOO调用BOO时,请求将首先通过自己的请求特使代理,或者直接转到BOO特使代理?
如何在FOO中调用BOO?我必须在FOO服务中提供http客户端的哪个地址才能调用BOO。我必须为BOO创建虚拟服务吗?在kubernetes cluser之外不应访问BOO。
您仍然可以像不使用istio一样调用其他服务。由于只需要在集群内部访问该服务,因此您需要使用clusterIP service将其公开。然后,您可以使用Kubernetes DNS呼叫服务。
虽然不必创建虚拟服务,it is advised by istio:
尽管默认的Istio行为可以方便地从没有任何规则的目标服务所有版本的任何源设置后,为每个服务器创建一个具有默认路由的VirtualService从一开始就提供服务,通常被认为是最佳做法在Istio。
当FOO调用BOO时,请求将首先通过自己的特使代理还是直接转到BOO特使代理?
它将同时通过两个特使。 istio这样可以管理请求的路由并提供诸如跟踪之类的流量见解。
尽管可以使用traffic.sidecar.istio.io/includeOutboundIPRanges annotation绕过出站特使代理。
[我建议使用附加到具有Kubernetes DNS用于BOO服务的Kubernetes service的selectors,以便将您的流量重定向到BOO窗格。