陈奇网络工作室

Istio开启mtls请求503问题分析

云计算

背景

为测试伊斯迪奥流量管理,将两个服务睡眠、睡眠的两个版本v1、v2(部署文件见参考链接)部署到伊斯迪奥环境中,通过睡眠-v1向弗拉斯卡普发起调用http://flaskapp/env/version,正常结果会交替打印出结果第五颅神经的眼支和v2,然而在调用过程中报错503复位原因:连接失败,故将问题的步骤、现象、分析、验证整理于此。

步骤

部署睡眠、睡眠应用,同时伊斯迪奥平台开启mTls,命名空间康克志开启自动注入,部署如下图所示:

ku bectl应用-关闭睡眠。伊斯迪奥。YAML-新康日

ku bectl应用瓶。伊西托。YAML-新康日

#查看豆荚创建情况

kubectl -n kangxzh get pod -w

运行0 13秒的flaskapp-v1-775 dbb9b 79-z54fj 2/2

烧瓶-v2-d 454 CD 47-MDB 8s 2/2运行0 14秒

睡眠-v1-7f45c6cf94-zgdsf 2/2运行0 19小时

睡眠-v2-58dff94b49-fz6sj 2/2运行0 19小时

现象

在睡眠应用中发起超文本传送协议(超文本传输协议的缩写)请求,调用flaskapp,curl http://flaskapp/env/version,如下所示:

#

export SOURCE _ POD=$(ku bectl get POD- l app=sleep,version=v1 -o jsonpath={ .项目.元数据。名称})

# 进入睡眠发起超文本传送协议(超文本传输协议的缩写)请求

kubectl-n kangxzh exec-it-c sleep $ SOURCE _ POD bash

bash-4.4 # curl http://flaskapp/env/version

# 响应

上游连接错误或在集管之前断开/重置。重置原因:连接失败

背景

1.检测flaskapp tls配置,如下:

[root @ kubernetes-master flaskapp]# istioctl authn TLS-check flaskapp-v1-775 dbb9b 79-z54fj flaskapp。kangxzh。SVC。集群。当地的

主机:端口状态服务器客户端验证策略目标规则

弗拉斯卡普。kangxzh。SVC。集群。本地:80正常mTLS mTLS默认/默认/istio-系统

状态正常证明flaskapp tls配置正确。

进入睡眠代理向弗拉斯卡普发起超文本传送协议(超文本传输协议的缩写)请求:

ku bectl-n kangxzh exec-it-c istio-proxy $ SOURCE _ POD bash

# 发起请求

curl http://flaskapp/env/version

# 响应

第五颅神经的眼支

2.发现通过委托代理可以得到相应,因为开启了mtls,通过委托代理直接请求是需要添加伊斯迪奥相关证书的,此时没有加入证书也可请求,所以想到检查flaskapp iptables配置,如下所示:

# 获取进程号

PID=$(docker inspect-format { {。状态。PID } } $(docker PS | grep flaskapp-v1 | awk \ \ \ ' { print $ 1 } \ \ \ ' | head-n 1))

# 查看iptables规则

nsenter-t $ { PID }-n iptables-t NAT-L-n-v

# 输出

链预路由(策略接受477个数据包,28620字节)

pkts字节目标保护选择输入输出源目标

487 29220 ISTIO入站TCP-* * 0。0 .0 .0/0 0 .0 .0/0

链输入(策略接受487个数据包,29220字节)

pkts字节目标保护选择输入输出源目标

链输出(策略接受220个数据包,20367个字节)

pkts字节目标保护选择输入输出源目标

0 480 ISTIO _ OUTPUT TCP-* * 0。0 .0 .0/0 0 .0 .0 .0/0

链后路由(策略接受220个数据包,20367个字节)

pkts字节目标保护选择输入输出源目标

链ISTIO_INBOUND (1个引用)

pkts字节目标保护选择输入输出源目标

10 600 ISTIO _ IN _ REDIRECT TCP-* * 0。0 .0 .0/0 0 .0 .0/0 TCP DPT:80 #是没有的,修改后增加

链式重定向(1个引用)

pkts字节目标保护选择输入输出源目标

10 600重定向TCP-* * 0。0 .0 .0/0 0 .0 .0/0重定向端口15001

链ISTIO_OUTPUT (1个引用)

pkts字节目标保护选择输入输出源目标

0 0 ISTIO _ REDIRECT all-* lo 0。0 .0 .0/0!127.0.0.1

8 480返回所有-* * 0 .0 .0 .0/0 0 .0 .0/0所有者用户界面设计(User Interface Design的缩写)匹配1337

0 0返回全部-* * 0 .0 .0 .0/0 0 .0 .0/0所有者情报总部(General Intelligence Division)匹配1337

0 0全部返回- * * 0.0.0.0/0 127.0.0.1

0 0 ISTIO _ REDIRECT all-* * 0。0 .0 .0/0 0 .0 .0/0

链ISTIO_REDIRECT (2个引用)

pkts字节目标保护选择输入输出源目标

0 0重定向TCP-* * 0。0 .0 .0/0 0 .0 .0/0重定向端口15001

证明使者没有劫持到flaskapp 80的流量,也就是说上述第2步是睡眠代理直接请求弗拉斯卡普,没有经过flaskapp-istio-proxy转发。

此时才检查弗拉斯卡普部署,如下所示:

-

apiVersion:扩展/v1beta1

种类:部署

元数据:

名称:flaskapp-v1

规格:

副本:1

模板:

元数据:

标签:

应用程序:flaskapp

版本:v1

规格:

容器:

-姓名:弗拉斯卡普

图像:灰尘/碎屑

imagePullPolicy: IfNotPresent

端口:

-名称:http

集装箱港口:80 #缺少集装箱港口

环境:

-名称:版本

值:v1

.

官网说明伊斯特奥https://号。io/文档/设置/kubernetes/附加-设置/请求/中:

豆荚端口:pod必须包括每个容器监听的端口的明确列表。在每个端口的容器规范中使用集装箱港口配置。任何未列出的端口都会绕过伊斯迪奥代理。

# 未列出来来的端口都会绕过伊斯迪奥代理

同时描述扁平豆荚如下所示:

ku bectl描述吊舱flaskapp-v1-6 df 8d 69 FB 8-fb5mr-n kangxzh

#

委托代理人:

.省略若干

参数:

.

-并发性

2

- controlPlaneAuthPolicy

相互_TLS

-状态运动

15020

-应用端口

#为空

在部署中增加集装箱港口:80后,如下所示:

委托代理人:

.省略若干

参数:

.

-并发性

2

- controlPlaneAuthPolicy

相互_TLS

-状态运动

15020

-应用端口

80

注意:在Istio1.2版本以后也可通过设置豆荚注释中traffic.sidecar.istio.io/includeInboundPorts来达到同样的目的,缺省值为豆荚的集装箱港口列表,逗号分隔的监听端口列表,这些流量会被重定向到边车*会重定向所有端口,具体详情参见官网1.2新特性(见参考链接)

验证

睡眠发起请求:

[root @ kubernetes-master flaskapp]# kube CTL-n kangxzh exec-it-c sleep $ SOURCE _ POD bash

bash-4.4 # curl http://flaskapp/env/version

#响应

第五颅神经的眼支

睡眠代理未携带证书,发起请求:

ku bectl-n kangxzh exec-it-c istio-proxy $ SOURCE _ POD bash

istio-proxy @ sleep-v1-7f 45 c6cf 94-zgdsf:/$ curl http://flaskapp/env/version

#响应

卷曲:(56) Recv失败:连接被对等方重置

睡眠代理携带证书,发起请求

istio-proxy @ sleep-v1-7f 45 c 6 cf 94-zgdsf:/$ curl https://flaskapp:80/env/version-key/etc/certs/key。PEM-cert/etc/certs/cert-chain。PEM-cacert/etc/certs/root-cert。PEM-k

#响应

第五颅神经的眼支

参考链接

https://github.com/fleeto/sleep

https://github.com/fleeto/flaskapp

伊斯特奥https://号。io/文档/设置/kubernetes/附加-设置/请求/

https://preliminary.istio.io/about/notes/1.2/

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3