Istio 出口给出来自 python 微服务的 "upstream connect error or disconnect/reset before headers" 错误

Istio egress gives "upstream connect error or disconnect/reset before headers" errors from python micro-service

当我 运行 一个 Python dockerized 或 kubernetes 容器中的微服务时,它工作得很好。但是对于 Istio 服务网格,它不起作用。

我已经为我的两个出站外部 http api 添加了 ServiceEntry。看来我可以使用服务网格内的 curl 命令访问容器内的 url 内容表单。所以,我认为服务条目很好并且可以正常工作。

但是当我尝试在 Python 中使用 xml.sax 解析器的微服务时,它给了我 upstream connect error or disconnect/reset before headers 尽管同一个应用程序在没有 Istio 的情况下也能正常工作。

我认为它与 Istio 或 Envoy 或 Python 有关。

更新:我确实注入了 Istio-proxy side-car。我还为外部 MySQL 数据库添加了 ServiceEntry 并且 mysql 从微服务连接。

我找到了这不起作用的原因。我的 Python 服务使用 xml.sax 解析器库从互联网解析 xml,它使用发起 http/1.0 请求的遗留 urllib 包。

Envoy 不支持 http/1.0 协议版本。因此,它不起作用。我通过使用 helm 为 Istio 设置 global.proxy.includeIPRanges="10.x.0.1/16" 来解决这个问题。这实际上绕过了给定 ip 范围之外的所有传出连接的整个特使代理。

但我不想全局绕过 Istio。