Istio开启mtls请求503技术问题分析
Istio开启mtls请求503问题分析 作者:康学志来源:博云研究院(公众号:bocloudresearch) 背景为测试Istio流量管理,将两个服务sleep、flaskapp的两个版本v1、v2(部署文件见参考链接)部署到Istio环境中,通过sleep-v1向flaskapp发起调用http:/flaskapp/env/version,正常结果会交替打印出结果v1和v2,然而在调用过程中报错503 reset reason: connection failure,故将问题的步骤、现象、分析、验证整理于此。步骤部署sleep、flaskapp应用,同时Istio平台开启mTls,命名空间kangxzh开启自动注入,部署如下图所示:现象在sleep应用中发起http请求,调用flaskapp,curl http:/flaskapp/env/version,如下所示:背景1.检测flaskapp tls 配置,如下:STATUS OK 证明flaskapp tls配置正确。进入sleep istio-proxy向flaskapp发起http请求:2.发现通过istio-proxy可以得到相应,因为开启了mtls,通过istio-proxy直接请求是需要添加istio相关证书的,此时没有加入证书也可请求,所以想到检查flaskapp iptables配置,如下所示: 证明envoy没有劫持到flaskapp 80的流量,也就是说上述第2步是sleep-istio-proxy直接请求flaskapp,没有经过flaskapp-istio-proxy 转发。3.此时才检查flaskapp deployment,如下所示: 官网说明https:/istio.io/docs/setup/kubernetes/additional-setup/requirements/中: 同时describe flaskapp pod 如下所示: 在deployment中增加containerPort: 80后,如下所示: 注意:在Istio1.2版本以后也可通过设置Pod annotation 中 traffic.sidecar.istio.io/includeInboundPorts来达到同样的目的,缺省值为Pod的containerPorts列表,逗号分隔的监听端口列表,这些流量会被重定向到 Sidecar,* 会重定向所有端口,具体详情参见官网1.2新特性(见参考链接) 验证sleep 发起请求:sleep-istio-proxy 未携带证书,发起请求: 参考链接· · · https:/istio.io/docs/setup/kubernetes/additional-setup/requirements/· https:/preliminary.istio.io/about/notes/1.2/> 本文由博云研究院原创发表,转载请注明出处。 -全文完-