Ser*_*kyi 8 docker kubernetes kubernetes-helm
只是为了澄清。
我对 Helm Test 感兴趣,你可以在这里阅读更多关于它的信息https://helm.sh/docs/chart_tests/#chart-tests。
不幸的是,文档没有为您提供很多信息,这部分是这个问题的原因。
我们有什么:
our-app/templates/tests/test-our-app.yaml
Run Code Online (Sandbox Code Playgroud)$ helm install our-app
然后我们可以测试该图像
Run Code Online (Sandbox Code Playgroud)$ helm test release-with-our-app
我想澄清的事情:
我们应该有两个单独的 docker 镜像还是一个用于应用程序和测试?...
一种)。如果它是应用程序代码和测试代码的单个图像,那么我们将在该图像上添加用于测试/测试的代码,这使得它更大,另外我们需要将测试所需的依赖项放在该图像上. 对我来说,这个解决方案似乎是错误的。
b)。我们有一个单独的测试图像的情况更有意义,因为我们的应用程序 docker 图像没有任何不必要的依赖项。更重要的是,在第二个解决方案中,我们并不真正关心带有测试的 docker 镜像的大小,因为它应该是一个短期镜像,在对它的测试完成后会关闭。
我的假设是否正确,我们应该为这些测试提供单独的图像吗?
如果有两个单独的图像,一个用于代码,另一个用于测试。我们如何与他们结婚?这是否意味着我们必须将 Build/Release 编号传递给 helm test 命令,以便它能够下拉正确的图像进行测试?
另外,如果我们有两个单独的图像。我应该在 docker 文件中指定测试运行进行测试吗?例如 :
Run Code Online (Sandbox Code Playgroud)CMD ["sh", "-c", "gradle test -Denvironment=$ENVIRONMENT"]
或者它应该在图表内
Run Code Online (Sandbox Code Playgroud)our-app/templates/tests/test-our-app.yaml
例如来自 mysql repo 的 test.yaml:
https://github.com/helm/charts/blob/master/stable/mysql/templates/tests/test-configmap.yaml
您可以通过以下链接在 mysql 图表中找到一个示例 https://github.com/helm/charts/tree/master/stable/mysql/templates
回答我自己的问题:

我们不需要传递任何东西,当您运行“helm test yourapp”时,helm 会查找您的应用程序的成功部署版本并使用该版本运行 helm test。

3. 当您运行“helm test yourapp”命令时。Helm 在文件
yourapp/templates/tests/smoke-test.yaml 中查找
由以下路径指定的命令:
spec/containers/command: ["sh", "-c", "your command"] 请看一下在屏幕截图上或转到 mysql 图表的 git repo https://github.com/helm/charts/tree/master/stable/mysql/templates 
| 归档时间: |
|
| 查看次数: |
7467 次 |
| 最近记录: |