使用 "helm test" 集成测试部署的服务
Integration testing deployed services using "helm test"
我正在使用 helm charts 将多个 REST 服务部署到 Microsoft Azure。
其中一些服务相互通信并与某些数据库通信。部署后,我想测试 "everything" 是否按预期工作。更准确地说,我想向其中一项服务发送一些 HTTP 请求并检查响应是否有意义。当然是在自动化测试中。
我看到可以在部署后使用 "helm test" 运行 基本命令,但这并不是我所需要的。
在一些早期的方法中,我在部署后在脚本中使用了 Newman to execute a Postman 集合。
Postman 集合定义了几个请求和相应的测试。
现在不知道在新环境(Azure)和部署流水线(helm,k8s)下如何做。
能再有这样的东西就好了。
但对我来说,尚不清楚该怎么做,例如
- 如何在 "helm test" 范围内使用 Newman?
- 我如何确保部署的 Pods 在开始测试之前全部 "Running"(一些等待时间?状态检查?)?
newman run "test.postman_collection.json" -e "azure.postman_environment.json" --bail
Helm 测试非常灵活,因为它运行任何 Kubernetes YAML,包括任何 Docker 图像。例如,您可以检查 tests for the MySQL Helm Chart.
所以,回答你的问题:
要使用 Newman,您只需找到安装了 Newman 的 Docker 图像(例如官方图像 postman/newman 或构建您自己的图像)。要使用您的 JSON 配置文件,您可以将它们作为 ConfigMap
或将它们复制到容器中。查看他 MySQL 舵图了解更多详情。
您说得对,您需要等到系统准备就绪后才能进行 运行 测试。据我所知,Helm 测试不涵盖此内容。因此,您需要将 sleep
放入您的脚本或主动检查 kubectl
直到 PODs 准备就绪。
我发布了执行邮递员集合的 Helm 图表测试的示例配置 here:
我通过 Helm Chart Tests and the postman/newman Docker image 实现了预期的行为。
用于测试执行的我的 Helm 模板:
apiVersion: v1
kind: Pod
metadata:
name: API Test
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: PostmanTest
image: postman/newman:latest
args:
- run
- <url-to-postman-collection>
# In case you need to define the hostname in the collection
# Use {{baseUrl}} in the request URL
- --env-var
- baseUrl=<kubernetes-host-name>
在您的管道中,您现在必须等到 pod 准备就绪(这可以使用已实施的就绪探测器进行检查),然后可以使用
执行图表测试
helm test
我正在使用 helm charts 将多个 REST 服务部署到 Microsoft Azure。 其中一些服务相互通信并与某些数据库通信。部署后,我想测试 "everything" 是否按预期工作。更准确地说,我想向其中一项服务发送一些 HTTP 请求并检查响应是否有意义。当然是在自动化测试中。
我看到可以在部署后使用 "helm test" 运行 基本命令,但这并不是我所需要的。
在一些早期的方法中,我在部署后在脚本中使用了 Newman to execute a Postman 集合。 Postman 集合定义了几个请求和相应的测试。
现在不知道在新环境(Azure)和部署流水线(helm,k8s)下如何做。
能再有这样的东西就好了。 但对我来说,尚不清楚该怎么做,例如
- 如何在 "helm test" 范围内使用 Newman?
- 我如何确保部署的 Pods 在开始测试之前全部 "Running"(一些等待时间?状态检查?)?
newman run "test.postman_collection.json" -e "azure.postman_environment.json" --bail
Helm 测试非常灵活,因为它运行任何 Kubernetes YAML,包括任何 Docker 图像。例如,您可以检查 tests for the MySQL Helm Chart.
所以,回答你的问题:
要使用 Newman,您只需找到安装了 Newman 的 Docker 图像(例如官方图像 postman/newman 或构建您自己的图像)。要使用您的 JSON 配置文件,您可以将它们作为
ConfigMap
或将它们复制到容器中。查看他 MySQL 舵图了解更多详情。您说得对,您需要等到系统准备就绪后才能进行 运行 测试。据我所知,Helm 测试不涵盖此内容。因此,您需要将
sleep
放入您的脚本或主动检查kubectl
直到 PODs 准备就绪。
我发布了执行邮递员集合的 Helm 图表测试的示例配置 here:
我通过 Helm Chart Tests and the postman/newman Docker image 实现了预期的行为。
用于测试执行的我的 Helm 模板:
apiVersion: v1
kind: Pod
metadata:
name: API Test
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: PostmanTest
image: postman/newman:latest
args:
- run
- <url-to-postman-collection>
# In case you need to define the hostname in the collection
# Use {{baseUrl}} in the request URL
- --env-var
- baseUrl=<kubernetes-host-name>
在您的管道中,您现在必须等到 pod 准备就绪(这可以使用已实施的就绪探测器进行检查),然后可以使用
执行图表测试helm test