我试图用它来运行一些集成测试,以便验证我部署的服务代码实际上在做正确的事。
基本上我是如何设置的(如此处所述:https://docs.helm.sh/developing_charts/#chart-tests)创建此templates/tests/integration-test.yaml
图表测试文件,并在其中指定运行容器,该容器基本上是一个自定义的maven映像,其中添加了测试代码进入并通过命令“ mvn test”简单启动测试容器,该命令对整个helm版本部署的kube服务进行一些简单的curl检查。
通过这种方式,舵测试确实有效。
但是,问题是,在运行头盔测试期间,新版本的服务代码实际上已经在线并且暴露给外界/用户。当然,如果舵测试失败,我可以立即回滚,但这不会阻止我将服务代码的问题版本暂时托管到外部世界。
有没有一种方法,在Pod启动之后但尚未暴露给Kubernetes服务之前,可以在Pod上运行服务/集成测试?
答案 0 :(得分:1)
理想情况下,您将首先在专用的测试集群或namepsace的测试环境中进行安装和测试。如果需要其他检查,可以先将图表安装到新的名称空间中,然后在此处运行测试,然后在所有名称空间通过后删除该名称空间。这确实要求编写测试,使其能够访问特定于该命名空间的URL。无论如何,基于服务名称的群集内部URL都是相对于名称空间的,但是如果在测试中使用外部URL,则需要将其切换为内部URL或使用前缀。
答案 1 :(得分:0)
使用pod规范中的“就绪性”和“活动性”探针,以确保如果出现探针故障,部署甚至不会推出。