【问题标题】:Can envoy in istio trace external https api?istio 中的 envoy 可以跟踪外部 https api 吗?
【发布时间】:2020-01-27 03:37:21
【问题描述】:

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

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

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

zipkin 上只显示 http 通信。

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

【问题讨论】:

  • 基于github,默认采样频率跟踪为1%。您可以尝试将其更改为 100% 然后尝试吗?让我知道这是否可行。
  • 此测试是在将采样率设置为 100% 后完成的。
  • 查看这两个链接,envoystackoverflow,基于此我会说不可能使用 zipkin 来跟踪 https。如果这能回答您的问题,请告诉我。
  • 感谢您的信息。我阅读了您的链接,我了解 envoy 不提供 https 跟踪器。

标签: kubernetes istio distributed-tracing


【解决方案1】:

基于envoy documentation,它不支持https跟踪。

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

这个帖子在stackoverflow

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您是否还需要对服务进行普通的 HTTP 调用,并让 egress gateway 进行 TLS 发起?
    • 不幸的是,它不起作用...我关注了egress-gateway,我无法获得跨度信息。我认为 egress-gateway 跟踪 https 请求信息,但它不是跟踪的一部分。
    猜你喜欢
    • 2021-05-18
    • 2018-07-25
    • 2012-05-17
    • 2021-02-04
    • 2015-05-16
    • 2021-06-13
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多