如何使用helm chart test做集成测试?

How to use helm chart test to do integration tests?

我正在尝试将它用于 运行 一些集成测试,以验证我正在部署的服务代码是否确实在做正确的事情。

基本上我的设置是(如此处所述:https://docs.helm.sh/developing_charts/#chart-tests)创建这个 templates/tests/integration-test.yaml 图表测试文件,并在其中指定 运行 一个容器,它基本上是一个自定义的添加了测试代码的 maven 图像和测试容器只需通过命令“mvn test”启动,该命令对整个 helm 版本部署的 kube 服务进行一些简单的 curl 检查。

这样helm测试就可以了

但问题是,在运行ning的helm测试中,新版本的服务代码实际上已经上线并对外暴露world/users。如果 helm 测试失败,我当然可以立即回滚,但这不会阻止我暂时将服务代码的问题版本托管给外界。

有没有一种方法可以在 pod 启动之后但在公开给 Kubernetes 服务之前运行对 pod 进行 service/integration 测试?

理想情况下,您将首先在测试环境(专用测试集群或命名空间)上安装和测试。对于额外的检查,您可以先将图表安装到一个新的命名空间中,然后让测试 运行 在那里,然后在它全部通过时删除该命名空间。这确实需要以一种可以命中特定于该名称空间的 URL 的方式编写测试。基于服务名称的集群内部 URL 无论如何都是命名空间相关的,但如果您在测试中使用外部 URL,那么您要么需要将它们切换为内部 URL,要么使用前缀。

使用 pod 规范中的就绪和活动探测,以确保即使探测失败,部署也不会推出。