0

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

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

但是当我尝试在 Python 中使用 xml.sax 解析器的微服务时,upstream connect error or disconnect/reset before headers虽然没有 Istio,但相同的应用程序也能正常工作。

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

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

4

1 回答 1

2

我找到了这不起作用的原因。我的 Python 服务使用 xml.sax 解析器库来解析来自 Internet 的 xml,它使用了启动 http/1.0 请求的旧 urllib 包。

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

但我不希望全局绕过 Istio。

于 2018-12-29T13:05:33.087 回答