当我在dockerized或kubernetes容器中运行Python微服务时,它工作正常。但是,使用Istio服务网格时,它将无法正常工作。
我为两个外部外部HTTP API添加了ServiceEntry。看来我可以使用服务网格内部的curl命令访问容器内的url内容表单。因此,我认为服务条目可以正常运行。
但是,当我尝试在Python中使用xml.sax解析器的微服务中时,尽管没有Istio的同一个应用程序也能正常工作,但它却给了我upstream connect error or disconnect/reset before headers
。
我认为这与Istio或Envoy或Python有关。
更新:我确实注射了Istio-proxy边车。我还为外部MySQL数据库添加了ServiceEntry,并且从微服务连接了mysql。
答案 0 :(得分:2)
我已经找到了导致此错误的原因。我的Python服务使用xml.sax解析器库从Internet解析xml,互联网使用的是启动http / 1.0请求的旧版urllib包。
Envoy不支持http / 1.0协议版本。因此,它不起作用。我通过使用头盔为Istio设置global.proxy.includeIPRanges =“ 10.x.0.1 / 16”来解决此问题。实际上,对于给定ip范围之外的所有传出连接,实际上绕过了整个envoy代理。
但是我不希望绕过Istio。