Testing 如何在部署到kubernetes之前测试我的微服务?

Testing 如何在部署到kubernetes之前测试我的微服务?,testing,kubernetes,automated-tests,microservices,Testing,Kubernetes,Automated Tests,Microservices,我正在为测试目的创建一个非常小的微服务环境。 情况如下: 如图所示,Istio安装在k8s集群中以使用service mesh 我编写了BOO服务,但不知道如何测试该服务,因为它调用FOO和ZOO服务 我可以模拟FOO和ZOO服务,但当将来BOO服务调用10个其他服务时,那么模拟所有服务确实有意义 在部署到kubernetes之前,测试我的微服务的最佳方法是什么 将它们部署到Kubernetes,但部署到生产环境以外的其他地方 有两种简单的方法可以获得Kubernetes集群。您可以使用或之类

我正在为测试目的创建一个非常小的微服务环境。 情况如下:

如图所示,Istio安装在k8s集群中以使用service mesh

我编写了
BOO
服务,但不知道如何测试该服务,因为它调用
FOO
ZOO
服务

我可以模拟
FOO
ZOO
服务,但当将来
BOO
服务调用10个其他服务时,那么模拟所有服务确实有意义


在部署到kubernetes之前,测试我的微服务的最佳方法是什么

将它们部署到Kubernetes,但部署到生产环境以外的其他地方

有两种简单的方法可以获得Kubernetes集群。您可以使用或之类的工具在本地系统上获取Kubernetes集群(分别位于VM或Docker容器中);如果您处于云环境中,那么像Amazon EKS或Google GKE这样的产品可以为您提供任意大小的集群。一旦拥有了集群,您就可以在集群上安装Helm(v2)和Istio等工具,然后运行与将服务部署到该集群中通常执行的完全相同的部署脚本

如果这变成了大量服务,那么让测试环境一直运行并设置CI系统以部署到生产环境和测试环境中可能会很有用


即使这样,您在这里描述的模拟方法仍然有空间:使用本地单元测试树测试和调试服务要比在某处部署服务容易得多。我通常基于模拟服务编写单元测试,然后还基于已部署的一组服务编写集成测试(如果集成测试失败,则使用模拟重现问题)。

我在旧pc中使用minikube进行开发,部署的kubernetes实体几乎与生产集群中的相同

在服务的开发/测试过程中,我做的一件事,也是我推荐的一件事是将所有实体都放在单独的文件中,这有助于使用脚本将文件从生产转换到开发

在我的例子中,助手脚本更改名称空间、一些秘密、卷详细信息、装载一些路径、配置映射等,这样我就可以为任何功能或bug创建一个新的名称空间,当我使用完该功能后,我将删除名称空间或销毁minikube实例

我将主要功能以一种只需将最小功能部署到新名称空间的方式分开,以处理功能

我有一个开放源代码的集群,您可以检查我在实际代码中所说的内容,并将其部署到您的minikube集群:


我一直致力于通过名称空间复制所有内容并分离主要功能,这对我从一个功能转移到另一个功能非常有用,我在开发过程中不涉及任何CI,只将生产转换为开发并应用于minikube

我是否正确理解您,在kubernetes集群中创建测试环境,设置CI系统,通过CI将服务部署到测试环境中,如果测试失败,则为本地单元测试编写模拟。选项a:设置测试环境,手动部署,运行集成测试。选项B:设置测试环境和CI系统,将CI系统部署到集群中并运行集成测试。(…甚至让CI系统自己创建集群。)