假设我已经发布了与之相关的测试套件。
因此,典型的安装将如下所示:
helm upgrade --install service service/不久之后:
$ helm test service-test
NAME: service
LAST DEPLOYED: Thu Jul 15 15:45:40 2021
NAMESPACE: default
STATUS: deployed
REVISION: 4
TEST SUITE: service-test
Last Started: Thu Jul 15 15:45:45 2021
Last Completed: Thu Jul 15 15:46:00 2021
Phase: Succeeded这就是测试套件的快乐路径。
但让我们想一想不那么令人愉快的场景:
$ helm test service-test
NAME: service
LAST DEPLOYED: Thu Jul 15 15:45:40 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: service-test
Last Started: Thu Jul 15 15:25:48 2021
Last Completed: Thu Jul 15 15:26:54 2021
Phase: Failed所以有明显的失败迹象,“失败”的子字符串可以被查找来触发helm rollback service 0,但是这种方法在我看来很奇怪。
如何使用helm内置机制或其他不涉及将helm test命令输出输送到sed/awk的工具正确地回滚失败的测试套件
发布于 2021-07-21 01:06:07
简单的答案是: helm hooks。
按照目前在helm发布管理中设计的方式,测试必须有注释,以便helm能够识别发布的终端状态。
此外,还有一种特殊的机制,可以在测试失败时触发就地回滚。请记住,在这种情况下,与测试套件相关的所有资源都会被清除,因此必须监视helm历史记录以获得实际的发布结果(或者删除hook-failed以对其进行调试)。
解决方案:
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}-test"
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test-success, post-upgrade
"helm.sh/hook-delete-policy": hook-succeeded, hook-failed
"helm.sh/hook-weight": "1"如果我没弄错的话,这个注解可以翻译成以下内容:
https://stackoverflow.com/questions/68398565
复制相似问题