上QQ阅读APP看书,第一时间看更新
2.9 Chart测试
一个Chart包含很多Kubernetes资源和组件。作为一个Chart作者,你可能喜欢写一些测试用例以检验Chart在安装时的可用性和正确性。这些测试用例也能帮助其他使用者明白这个Chart的功能和目的。
Chart测试文件存放在templates/文件夹下,它被定义为一个Pod,然后在Pod内执行测试用例。当运行测试完毕后,Pod的退出码应该为0,这样就会被认为测试成功。这个Pod必须含有测试专用标签,如helm.sh/hook:test-success或者helm.sh/hook:test-failure。
我们可以通过运行helm test<release-name>检测一个release的正确性,对于Chart使用者而言,这是一个了解应用能否按照期望去工作的机会。
在Helm Chart中共有两个测试标签,test-success和test-failure。
test-success表明测试Pod必须完全成功,也就是Pod内命令的退出码为0;test-failure表明Pod必须失败,也就是Pod内命令退出码不为0,这种情况下才认为这个测试是成功的。
下面我们以Wordpress中的一个测试Pod为例,来看看Chart测试的情况。这个测试用例检测参数的正确性,同时尝试去登录mariadb数据库。
wordpress/ Chart.yaml README.md values.yaml Charts/ templates/ templates/tests/test-mariadb-connection.yaml
在wordpress/templates/tests/test-mariadb-connection.yaml中:
apiVersion: v1 kind: Pod metadata: name: "{{ .Release.Name }}-credentials-test" annotations: "helm.sh/hook": test-success spec: containers: - name: {{ .Release.Name }}-credentials-test image: {{ .Values.image }} env: - name: MARIADB_HOST value: {{ template "mariadb.fullname" . }} - name: MARIADB_PORT value: "3306" - name: WORDPRESS_DATABASE_NAME value: {{ default "" .Values.mariadb.mariadbDatabase | quote }} - name: WORDPRESS_DATABASE_USER value: {{ default "" .Values.mariadb.mariadbUser | quote }} - name: WORDPRESS_DATABASE_PASSWORD valueFrom: secretKeyRef: name: {{ template "mariadb.fullname" . }} key: mariadb-password command: ["sh", "-c", "mysql --host=$MARIADB_HOST --port=$MARIADB_PORT --user=$WORDPRESS_DATABASE_USER --password=$WORDPRESS_DATABASE_PASSWORD"] restartPolicy: Never
首先安装如下Chart。
helm install stable/wordpress NAME: quirky-walrus NAMESPACE: default STATUS: DEPLOYED
然后进行测试。
helm test quirky-walrus RUNNING: quirky-walrus-credentials-test SUCCESS: quirky-walrus-credentials-test