postman通过外部访问k8s集群进行接口测试

背景:

在k8s项目开发初期,针对集群环境进行接口测试时,优先采用在集群内部通过”service ip + port”使用curl进行接口测试。若service重启, service ip发生变化,curl 的IP地址也需要随之变更,在多场景测试环境中,过于麻烦,测试不方便,为了提高易用性和测试效率,在后期较为稳定的环境中,可以使用外部访问集群进行接口测试。

说明:

本文涉及k8s service、ingress相关概念,请先移步盟盟汇,查阅《k8s集群内应用访问机制简介及实践》

K8s集群测试拓扑如下:

1、集群内部使用curl 进行接口测试

在k8s集群内部,通过”service ip + port”访问具体应用进行接口测试。

1.1 查看服务向外暴露的IP和端口

1.2 集群内部接口测试:新增服务订阅

1.3 集群内部接口测试:查询服务

1.4 集群内部接口测试:删除服务

2、Kong网关:对外提供统一的访问入口

测试环境中,K8s集群内使用kong网关作为集群的统一访问入口,使用etcd实现服务注册中心,保存服务注册相关信息。

2.1 检查kong网关相关服务是否正常,并确认端口

#查看kong网关服务及端口

其中kong-proxy-operate为网关的对外服务口;

业务口为80,映射到外部访问端口为30000。 测试通过业务口也就是30000。

如果在节点上执行测试用例 使用: localhost:30000

如果在节点外部执行测 使用: node-ip:30000

#查看svc内容

2.2 各服务内拥有自己的ingress配置,通过path来区分服务,示例如下:

etcd内的ingress.yaml配置:

3、外部访问集群进行接口测试

3.1 确认“集群node ip+nodeport”

由 2.1 确认外部测试通过业务口30000。

#查看集群node ip

外部访问为“集群node ip+nodeport” 即 192.168.122.200:30000

3.2 使用标准接口路径访问集群进行接口测试:

3.2.1 把curl命令添加进postman:

Import Raw text: 把curl的命令行贴进text,修改URL中的”Service IP +port”为 “集群node IP+nodeport”continueImport

#结果如下:

3.2.2 通过postman外部访问集群进行接口测试:下发配置

3.2.3 通过postman外部访问集群进行接口测试:查看配置

3.2.4 通过postman外部访问集群进行接口测试:删除配置

再次查询,确认删除:

总结:

在持续开发的项目,需要进行多场景测试,制造各种异常,此时使用外部访问k8s相较于使用内部访问k8s进行接口测试,无需考虑service ip的变更,只需专注于接口测试内容参数,减少参数修改和环境影响,提高配置正确率,提高接口测试易用性。

猜你喜欢

转载自blog.csdn.net/qq_52604591/article/details/128813506