写点什么

helm test 测试

作者:ghostwritten
  • 2022 年 5 月 10 日
  • 本文字数:1860 字

    阅读完需:约 6 分钟

helm test 测试

1. 简介

helm chart 中的测试templates/位于该目录下,并且是一个作业定义,它指定具有给定命令运行的容器。容器应该成功退出(退出 0),测试被认为是成功的。作业定义必须包含 helm test hook 注解:helm.sh/hook: test.


请注意,在 Helm v3 之前,作业定义需要包含以下 helm 测试挂钩注释之一:helm.sh/hook: test-successhelm.sh/hook: test-failure. helm.sh/hook: test-success仍然被接受为向后兼容的替代helm.sh/hook: test.


示例测试:


  • 验证 values.yaml 文件中的配置是否已正确注入。

  • 确保您的用户名和密码正确使用

  • 确保不正确的用户名和密码不起作用

  • 断言您的服务已启动并正确进行负载平衡

  • 等等。


您可以使用命令在 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-weighthelm.sh/hook-delete-policy

发布于: 1 小时前阅读数: 4
用户头像

ghostwritten

关注

还未添加个人签名 2018.11.14 加入

还未添加个人简介

评论

发布
暂无评论
helm test 测试_Kubernetes_ghostwritten_InfoQ写作社区