【问题标题】:Skaffold/K8s Unit testingSkaffold/K8s 单元测试
【发布时间】:2023-03-22 03:08:01
【问题描述】:
我正在尝试在部署之前对我的微服务进行单元测试,但是在 Skaffold 管道中,图像会在部署之前进行测试。这里的问题是我的镜像中的代码依赖于从 k8s configmaps 和 secrets 挂载的配置和凭据,因此如果在部署之前运行单元测试,测试总是会失败。
如何使用 skaffold 为微服务运行单元测试?通常如何为微服务运行单元测试?环顾网络,似乎没有人有一个直接的答案。
任何指导将不胜感激。
【问题讨论】:
标签:
unit-testing
kubernetes
pytest
devops
skaffold
【解决方案1】:
我已经使用或看到人们用于部署的端到端测试的几种策略:
- 集群内测试,您可以在其中部署一个或多个执行测试的作业,然后使用作业状态来传达测试成功/失败。我们使用这种方法来测试
skaffold debug 使用的container-debug-support 图像。我们运行 little script,它在包含一组测试作业 (example) 的 integration 配置文件中构建和部署一组图像。然后,该脚本会使用kubectl wait 等待这些作业完成。
- 在集群外部,您可以在其中访问公开的服务:这可以使用
after-deploy hooks 完成。您可以使用它来进行一些冒烟测试或负载测试。如果您打算保持应用程序运行,则此方法有效;我不确定在钩子中拆除应用是个好主意。
skaffold run 和 skaffold delete 是用于暂存和拆除应用程序的有用原语。