1. 简介
helm chart 中的测试templates/位于该目录下,并且是一个作业定义,它指定具有给定命令运行的容器。容器应该成功退出(退出 0),测试被认为是成功的。作业定义必须包含 helm test hook 注解:helm.sh/hook: test.
请注意,在 Helm v3 之前,作业定义需要包含以下 helm 测试挂钩注释之一:helm.sh/hook: test-success或helm.sh/hook: test-failure. helm.sh/hook: test-success仍然被接受为向后兼容的替代helm.sh/hook: test.
示例测试:
您可以使用命令在 Helm 中运行预定义的测试helm test <RELEASE_NAME>。对于图表使用者来说,这是检查他们发布的图表(或应用程序)是否按预期工作的好方法。
2. demo
这是bitnami wordpress 图表中 helm test pod 定义的示例。如果您下载图表的副本,您可以在本地查看文件:
$ helm repo add bitnami https://charts.bitnami.com/bitnami$ helm pull bitnami/wordpress --untar
复制代码
wordpress/ Chart.yaml README.md values.yaml charts/ templates/ templates/tests/test-mariadb-connection.yaml
复制代码
在wordpress/templates/tests/test-mariadb-connection.yaml中,您会看到一个可以尝试的测试:
{{- if .Values.mariadb.enabled }}apiVersion: v1kind: Podmetadata: name: "{{ .Release.Name }}-credentials-test" annotations: "helm.sh/hook": testspec: containers: - name: {{ .Release.Name }}-credentials-test image: {{ template "wordpress.image" . }} imagePullPolicy: {{ .Values.image.pullPolicy | quote }} {{- if .Values.securityContext.enabled }} securityContext: runAsUser: {{ .Values.securityContext.runAsUser }} {{- end }} env: - name: MARIADB_HOST value: {{ template "mariadb.fullname" . }} - name: MARIADB_PORT value: "3306" - name: WORDPRESS_DATABASE_NAME value: {{ default "" .Values.mariadb.db.name | quote }} - name: WORDPRESS_DATABASE_USER value: {{ default "" .Values.mariadb.db.user | quote }} - name: WORDPRESS_DATABASE_PASSWORD valueFrom: secretKeyRef: name: {{ template "mariadb.fullname" . }} key: mariadb-password command: - /bin/bash - -ec - | mysql --host=$MARIADB_HOST --port=$MARIADB_PORT --user=$WORDPRESS_DATABASE_USER --password=$WORDPRESS_DATABASE_PASSWORD restartPolicy: Never{{- end }}
复制代码
在版本上运行测试套件的步骤首先,在集群上安装图表以创建发布。您可能必须等待所有 pod 都激活;如果您在此安装后立即进行测试,则可能会显示传递失败,您将需要重新测试。
$ helm install quirky-walrus wordpress --namespace default$ helm test quirky-walrusPod quirky-walrus-credentials-test pendingPod quirky-walrus-credentials-test pendingPod quirky-walrus-credentials-test pendingPod quirky-walrus-credentials-test succeededPod quirky-walrus-mariadb-test-dqas5 pendingPod quirky-walrus-mariadb-test-dqas5 pendingPod quirky-walrus-mariadb-test-dqas5 pendingPod quirky-walrus-mariadb-test-dqas5 pendingPod quirky-walrus-mariadb-test-dqas5 succeededNAME: quirky-walrusLAST DEPLOYED: Mon Jun 22 17:24:31 2020NAMESPACE: defaultSTATUS: deployedREVISION: 1TEST SUITE: quirky-walrus-mariadb-test-dqas5Last Started: Mon Jun 22 17:27:19 2020Last Completed: Mon Jun 22 17:27:21 2020Phase: SucceededTEST SUITE: quirky-walrus-credentials-testLast Started: Mon Jun 22 17:27:17 2020Last Completed: Mon Jun 22 17:27:19 2020Phase: Succeeded[...]
复制代码
您可以在单个 yaml 文件中定义任意数量的测试,也可以分布在templates/目录中的多个 yaml 文件中。
您的测试套件嵌套在 tests/类似的目录下以<chart-name>/templates/tests/实现更多隔离。
一个测试是一个 Helm 钩子,所以注解可以和测试资源一起使用helm.sh/hook-weight。helm.sh/hook-delete-policy
评论