kubernetes - 在已安装的版本上运行 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
关键问题是该测试将在服务尚未真正启动时执行,因此无论如何都会失败。
是否有一些机制或解决方法来引入此测试的执行延迟?
想到在单独的测试容器中设置一些睡眠步骤,但我不确定这是否适用于这种情况
解决方案
curl
--retry
支持通过标志重试请求。您可以将此标志作为命令参数传递。您可以从该线程检查更多可配置的重试选项:https ://stackoverflow.com/a/42873372/7695859
推荐阅读
- angular - 使用 Angular 获取外部 url 的元数据
- python - 按文件名加载 python 脚本源以进行测试
- mysql - sql - 在数值后添加 0
- python - \_tfq_simulate_ops.so 导入 tensorflow_quantum 时未找到
- react-native - 使用本机反应将 content:// uri 转换为 file:// uri
- jenkins - 更新 Jenkins 插件的问题
- javascript - 使用 nodej 和 sqlite3 构建关系数据库
- sql-server - 将数据库的所有权限授予用户
- nodemailer - 尝试通过 nodemailer 和 mailgun 发送电子邮件时出现 TypeError
- c++ - C++ OpenProcess 使用 Admin Privilege IDE 成功,但在 Admin CMD 中执行时失败