如果测试失败,则控制部署状态

时间:2019-03-01 10:16:45

标签: testing kubernetes kubernetes-helm

如果在安装失败之前运行测试,是否有可能使Helm图表部署失败?因为现在尽管测试失败,但是状态为“已部署”。

我的测试,该测试检查MongoDB是否已部署并且是否可以访问:

apiVersion: v1
kind: Pod
metadata:
  name: "{{ .Release.Name }}-database-connection-test"
  annotations:
    "helm.sh/hook": pre-install,test-success
    "helm.sh/hook-delete-policy": before-hook-creation
spec:
  containers:
  - name: {{ .Release.Name }}-database-connection-test
    image: {{ template "mongo.image" . }}
    imagePullPolicy: Always
    env:
      - name: HOST
        value: {{ .Values.mongo.host }}
      - name: PORT
        value: {{ .Values.mongo.port | quote }}
      - name: DATABASE_NAME
        value: {{ .Values.mongo.databasename }}
      - name: USERNAME
        value: {{ .Values.mongo.username }}
      - name: PASSWORD
        value: {{ .Values.mongo.password }}
    command: ["sh", "-c", "mongo --username $USERNAME --password $PASSWORD --authenticationDatabase $DATABASE_NAME --host $HOST --port $PORT"]
  restartPolicy: Never

1 个答案:

答案 0 :(得分:1)

因此,通常可以通过将资源类型设置为Used Capacity来实现。 作业将阻止Tiller,直到完成为止。
这里有一个小问题:如果作业无法完成,它将无限期地阻止Helm图表的部署。为避免这种情况,需要设置Total。如果直到设置的时间限制才完成,它将使作业超时。

Job

这是一种解决方法,因为最初不应该将Helm测试注释与其他钩子一起使用。