Testing 在Kubernetes堆栈上运行集成/e2e测试
我一直在深入研究人们在Kubernetes环境下运行集成和e2e测试的方式,并对缺乏文档和反馈感到非常失望。我知道有一些很棒的工具,比如kind或minikube,可以在本地运行资源。但是在一个CI的上下文中,由于明显的资源原因,对于一系列服务来说,它似乎并不适合。我认为在以下方面运行测试有很大的机会:Testing 在Kubernetes堆栈上运行集成/e2e测试,testing,kubernetes,continuous-integration,Testing,Kubernetes,Continuous Integration,我一直在深入研究人们在Kubernetes环境下运行集成和e2e测试的方式,并对缺乏文档和反馈感到非常失望。我知道有一些很棒的工具,比如kind或minikube,可以在本地运行资源。但是在一个CI的上下文中,由于明显的资源原因,对于一系列服务来说,它似乎并不适合。我认为在以下方面运行测试有很大的机会: 验证舱单或舵图 作为更大整体的一部分验证组件的良好性能 验证产品的全局行为 这里的重点并不是关于测试框架,而是关于可以在其上运行测试的环境 你同意我的想法吗?您是否有过运行此类测试的经验?你
- 验证舱单或舵图
- 作为更大整体的一部分验证组件的良好性能
- 验证产品的全局行为
非常感谢您提出了一个有趣的问题,以及我在过去几个月为我的现任雇主所做的一些事情。本质上,我们以docker图像和清单的形式发布产品。在编写e2e测试时,我希望尽可能靠近客户环境运行产品 基本上,为了解决这个问题,我们构建了与标准云提供商(GCloud)交互的脚本,以创建集群,部署产品,然后对其运行测试 对于主要的云提供商来说,这不是一项困难的任务,但可能很耗时。在开发测试时,有几件事情是我们通过艰苦的方式学到的,需要牢记在心
- 以下是此博客文章的一些附加信息:
- 以及在travis ci中安装kind的脚本,共2行:。它允许在k8s端进行大量定制(启用psp,更改CNI插件)
- 以下是一个例子:
- 以下是一个例子:
一件有趣的事情是,你不必为你的CI维护k8s集群,kind会为你做的 非常感谢您的回答@james wilson。这绝对是一个非常宝贵的经验反馈。你一定花了很多时间才准备好使用。实际上,我有两个问题可能与您的第二点和第三点有关:-关于您委托给云提供商的操作的延迟,加上堆栈的启动时间,整个CI管道需要多长时间才能完成?我不知道您是否已经到了开始运行太多服务的地步,但就时间而言,您如何将集群的创建/删除与服务的部署和测试的运行进行比较?-我的第二点是关于与集群的通信。你是如何做到这一点的?您是否声明了需要等待传播的DNS条目,或者您是否选择了另一种方式与您的内部服务通信?(例如,port forward或其他)感谢您抽出时间,我非常有兴趣了解这个话题的最新进展。嗨@vensa,很高兴这对我有所帮助。就运行测试所花费的时间而言,测试是最耗时的步骤,其次是启动产品,最后是设置/拆除集群。我们的整个CI管道相当复杂,不幸的是,我们以小时为单位度量时间:(通常花费时间试图使其更快!在通信方面,我们有点懒惰,只使用分配的外部IP地址(在服务定义中)WOW等待你的CI在几小时内完成运行肯定是痛苦的。你仍然认为它是一个有趣的点,以减少设置/拆分集群的时间为零吗?告诉我,如果我错了,但你得到你的服务的定义,并提取它的外部IP通信吗?nds是公平的,因为它满足了你的需要。我不认为有这种可能性。