【问题标题】:Integration testing deployed services using "helm test"使用“helm test”集成测试部署的服务
【发布时间】:2019-11-03 10:10:29
【问题描述】:

我正在使用 helm 图表将多个 REST 服务部署到 Microsoft Azure。 其中一些服务相互通信并与某些数据库通信。部署后,我想测试“一切”是否按预期工作。更准确地说,我想向其中一项服务发送一些 HTTP 请求并检查响应是否有意义。当然是在自动化测试中。

我看到使用"helm test" 可以在部署后运行基本命令,但这并不是我所需要的。

在一些较早的方法中,我在部署后使用Newman 在脚本中执行Postman 集合。 Postman 集合定义了几个请求和相应的测试。

现在不知道在新环境(Azure)和部署管道(helm、k8s)中怎么做。

如果再有这样的东西就好了。 但对我来说,不清楚如何去做,例如

  • 如何在“helm test”范围内使用 Newman?
  • 如何确保部署的 Pod 在开始测试之前都处于“运行”状态(需要等待一些时间?状态检查?)?

newman run "test.postman_collection.json" -e "azure.postman_environment.json" --bail

【问题讨论】:

    标签: java kubernetes postman kubernetes-helm newman


    【解决方案1】:

    我发布了一个用于执行邮递员集合here 的 Helm 图表测试的示例配置:

    我使用Helm Chart Testspostman/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 准备就绪(这可以通过已实施的就绪探针进行检查),然后才能执行图表测试

    掌舵测试

    【讨论】:

      【解决方案2】:

      Helm 测试非常灵活,因为它运行任何 Kubernetes YAML,包括任何 Docker 映像。例如,您可以查看tests for the MySQL Helm Chart

      所以,来回答你的问题:

      1. 要使用 Newman,你只需要找到一个安装了 Newman 的 Docker 镜像(例如官方的 postman/newman 或自己构建)。要使用您的 JSON 配置文件,您可以将它们作为 ConfigMap 或将它们复制到容器中。查看他的 MySQL Helm Chart 了解更多详情。

      2. 您说得对,您需要等到系统准备好后再运行测试。 AFAIK 这不在 Helm 测试中。因此,您需要将sleep 放入您的脚本或主动检查kubectl,直到POD 准备就绪。

      【讨论】:

      • 您好,谢谢您的回复。如果我首先理解“掌舵测试”的概念,我仍然不完全确定。 helm test 到底在做什么?它是在测试之前部署的已经存在的设置(Pod 等)(例如使用helm install),还是helm test 会自行部署设置,然后再进行测试?
      • 第一个。它测试您使用 helm install 部署的现有设置。
      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多