只是澄清一下。
我对Helm Test感兴趣,您可以在https://helm.sh/docs/chart_tests/#chart-tests上详细了解它。
不幸的是,文档没有为您提供很多信息,这部分是造成此问题的原因。
我们所拥有的:
our-app / templates / tests / test-our-app.yaml
$ helm install our-app
然后我们可以测试该图像
$ helm test release-with-our-app
我想澄清的事情:
我们应该有两个单独的docker映像还是一个用于应用程序和测试的映像?...
a)。如果应用程序代码和测试代码都是单个映像,那么我们将在该映像上添加用于所有测试的代码,这使其变得更大,此外,我们需要在该映像上放置测试所需的依赖项。对我来说,这种解决方案似乎是错误的。
b)。我们有一个单独的映像进行测试的情况更有意义,因为我们的应用程序docker映像没有任何不必要的依赖关系。更重要的是,在第二种解决方案中,我们并不真正在乎带有测试的docker映像的大小,因为它应该是一个短暂的映像,当对其进行测试时会关闭。
我的假设是正确的,我们应该为这些测试使用单独的图像吗?
如果有两个单独的图像,一个用于代码,另一个用于测试。我们如何彼此结婚?这是否意味着我们必须将构建/发布编号传递给头盔测试命令,以便它能够提取正确的图像进行测试?
如果我们有两个单独的图像,也是这样。我应该在docker文件中指定测试运行以进行测试吗? 例如:
CMD ["sh", "-c", "gradle test -Denvironment=$ENVIRONMENT"]
还是应该在图表内
our-app/templates/tests/test-our-app.yaml
例如mysql仓库中的test.yaml:
https://github.com/helm/charts/blob/master/stable/mysql/templates/tests/test-configmap.yaml
答案 0 :(得分:3)
您可以通过以下链接在mysql图表中找到一个示例 https://github.com/helm/charts/tree/master/stable/mysql/templates
回答我自己的问题:
我们无需传递任何内容,当您运行“ helm test yourapp”时,helm会查找成功部署的yourapp版本并使用该版本运行helm test。
3.运行“ helm test yourapp”命令时。头盔出现在文件中
yourapp / templates / tests / smoke-test.yaml
调用以下路径指定的命令:
规格/容器/命令:[“ sh”,“-c”,“您的命令”]
请看截图或转到mysql图表https://github.com/helm/charts/tree/master/stable/mysql/templates
答案 1 :(得分:1)
只需开始本主题:
我认为这取决于您的需求。
对于1,2,3-据我了解,“ 头盔测试”非常灵活,可以根据您的需要执行任何其他测试。
您可以使用不同的图像和不同的方法,也可以使用一个具有不同参数的图像,但有时由于docker入口点的缘故,这可能是不可能的-请参阅commands and arguments。
根据第四个问题-我认为您应该考虑使用configmaps和secrets来定义env变量并将其公开到pod中。
其他资源“安全测试”:
希望获得帮助。