如何在 ISTIO 中调用网格内的服务?

zer*_*ing 3 kubernetes istio

我正在使用安装在 kubernetes 之上的服务网格https://istio.io/并安装了ISTIO 在其网站上提供的示例https://istio.io/docs/examples/bookinfo/

假设,我已经创建了一个服务 FOO,想调用服务等级通过虚拟服务评级

在此处输入图片说明

  • 如何在内部调用评级FOO?我必须在FOO服务中提供http客户端哪个地址才能调用ratings。我必须为评级创建虚拟服务吗?评级不应在 kubernetes cluser 之外访问。

  • FOO调用ratings 时,请求会首先通过自己的 envoy 代理还是直接进入ratings envoy 代理?

后续问题

以下是 kubernetes 集群上安装的所有虚拟服务:

[在此处输入图片说明2

集群 IP 地址为:

在此处输入图片说明

问题是,如何在FOO服务中调用ratings服务?用集群IP地址?

Rob*_*bbe 8

如何在 FOO 中调用 RATINGS?需要在FOO服务中提供http客户端哪个地址才能调用RATINGS。我是否必须为 RATINGS 创建虚拟服务?RATINGS 不应在 kubernetes cluser 之外访问。

您仍然可以像没有 istio 一样调用其他服务。由于该服务只需要在集群内部可访问,因此您需要使用clusterIP 服务来公开它。然后,您可以使用Kubernetes DNS按名称调用服务。通常,该服务可在http(s)://{namespace}.{service-name}。要调用同一命名空间中的服务,您可以将{namespace}url 省略。

虽然没有必要创建 VirtualService,但 istio 建议

尽管默认的 Istio 行为方便地将流量从任何源发送到目标服务的所有版本,而无需设置任何规则,但从一开始就为每个服务创建一个具有默认路由的 VirtualService,通常被认为是 Istio 中的最佳实践。

当 FOO 调用 RATINGS 时,请求会先通过自己的 envoy 代理还是直接进入 RATINGS 的 envoy 代理?

它将通过两个特使代理。这就是 istio 可以管理您的请求路由并提供跟踪等流量洞察的方式。

不过,可以使用traffic.sidecar.istio.io/includeOutboundIPRanges 注释绕过出站特使代理。