3

我们使用 istio 来使用分布式跟踪。我们的微服务有时需要访问外部 API,这些 API 通常通过 https 进行通信。

为了测量整个系统的准确性能,我们希望在访问外部 API 时跟踪通信。
但是,分布式跟踪需要访问请求的标头,但是 https 不允许访问,因为标头是加密的。
为了确认,我在启用了 istio 的 GKE 上部署 bookinfo,进入 productpage pod 的 productpage 容器,并执行以下命令。

$ curl http://google.com
$ curl https://google.com

zipkin 上只显示 http 通信。

是否可以得到一系列的踪迹,包括使用外部 https 的 API?

4

2 回答 2

1

根据envoy 文档,它不支持 https 跟踪。

跟踪配置指定 Envoy 使用的 HTTP 跟踪器的全局设置。配置由 Bootstrap 跟踪字段定义。Envoy 将来可能会支持其他跟踪器,但目前仅支持 HTTP 跟踪器。

还有这个关于stackoverflow的帖子

HTTPS(基于 SSL 的 HTTP)通过 SSL 隧道发送所有 HTTP 内容,因此 HTTP 内容和标头也被加密。

我什至试图重现这一点,但就像你的情况一样,zipkin 仅适用于 http。

基于此,我会说不可能使用 zipkin 来跟踪 https。

于 2020-01-30T11:47:03.293 回答
0

您应该使用egress-gateway。当所有外部调用都转到网关时,istio 可以获取元数据并进行一些跟踪工作。使用入口/出口网关有很多优点:

  • 提高安全性:我们可以在网关设置所有安全规则。
  • 抽象应用程序逻辑:而不是在每个微服务上配置设置。
  • TLS 处理:和上面的例子一样,envoy 可以在 HTTPS 请求中拥有所有必要的数据。
于 2020-01-27T06:15:42.393 回答