首页 > 解决方案 > 在已安装的版本上运行 helm 测试套件引入延迟

问题描述

我正在使用 helm 图表将多个 REST 服务部署到 k8s 中,并在已部署的容器内使用 spring boot。

然而,为了能够进行最后阶段的测试,我需要引入某种智能活性探测——即目标应用程序实际上在给定容器内正常运行。

这可以很容易地通过简单curl命令的成功返回码来证明,但是,这里有一个技巧 - 在特定发布部署之后需要延迟执行命令,以便为应用程序提供引导时间。

这是我对测试套件的设想:

apiVersion: v1
kind: Pod
metadata:
  name: "{{ include "chart.fullname" . }}-test"
  labels:
  {{- include "chart.fullname" . | nindent 4 }}
  annotations:
    "helm.sh/hook": test-success
spec:
  containers:
    - name: test-curl
      image: curl
      command: ['curl']
      args: [' -X POST -i -H "Accept: application/json" -H "Content-Type:application/json" -d ''{"foo":["bar"]}'' {{ include "chart.fullname" . }}:{{ .Values.service.port }}']
  restartPolicy: Never

关键问题是该测试将在服务尚未真正启动时执行,因此无论如何都会失败。

是否有一些机制或解决方法来引入此测试的执行延迟?

想到在单独的测试容器中设置一些睡眠步骤,但我不确定这是否适用于这种情况

标签: kuberneteskubernetes-helm

解决方案


curl--retry支持通过标志重试请求。您可以将此标志作为命令参数传递。您可以从该线程检查更多可配置的重试选项:https ://stackoverflow.com/a/42873372/7695859


推荐阅读