ruffylangzi
作者ruffylangzi·2019-07-03 16:28
软件架构设计师·博云

Istio开启mtls请求503问题分析

字数 1284阅读 1527评论 0赞 2

作者:康学志
来源:博云研究院(公众号: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 未携带证书,发起请求:

参考链接

> 本文由博云研究院原创发表,转载请注明出处。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广