Pruebas de Chart
Un chart contiene varios recursos y componentes de Kubernetes que funcionan juntos. Como autor de charts, es posible que desee escribir algunas pruebas que validen que su chart funciona como se esperaba cuando se instala. Estas pruebas también ayudan al consumidor de charts a comprender lo que se supone que debe hacer su chart.
Una prueba en un chart de helm vive en el directorio templates/
y es una
definición de trabajo que especifica un contenedor con un comando dado para ejecutar.
El contenedor debe salir correctamente (salida 0) para que una prueba se considere
un éxito. La definición del trabajo debe contener la anotación del gancho de
prueba del timón: helm.sh/hook: test
.
Tenga en cuenta que hasta Helm v3, la definición de trabajo debía contener una
de estas anotaciones de gancho de prueba de helm: helm.sh/hook: test-success
o
helm.sh/hook: test-failure
. helm.sh/hook: test-success
todavía se acepta como
una alternativa compatible con versiones anteriores de helm.sh/hook: test
.
Ejemplo de pruebas:
- Valide que su configuración del archivo values.yaml se haya inyectado correctamente.
- Asegúrese de que su nombre de usuario y contraseña funcionen correctamente
- Asegúrese de que un nombre de usuario y una contraseña incorrectos no funcionen
- Afirmar que sus servicios están activos y con el balanceo de carga correcto
- etc.
Puede ejecutar las pruebas predefinidas en Helm en un release usando el comando
helm test <RELEASE_NAME>
. Para un consumidor de charts, esta es una excelente
manera de verificar que su release de un chart (o aplicación) funcione como se esperaba.
Ejemplo de Prueba
A continuación se muestra un ejemplo de la definición de un módulo de prueba Helm en el chart de bitnami wordpress. Si descarga una copia del chart, puede ver los archivos localmente:
$ 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
En el archivo wordpress/templates/tests/test-mariadb-connection.yaml
, verás
una prueba que puedes probar:
{{- if .Values.mariadb.enabled }}
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-credentials-test"
annotations:
"helm.sh/hook": test
spec:
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 }}
Pasos Para Ejecutar un Conjunto de Pruebas sobre un Release
Primero, instale el chart en su clúster para crear un release. Puede que tenga que esperar a que todos los Pods se activen; si prueba inmediatamente después de esta instalación, es probable que muestre una falla transitiva y querrá volver a probar.
$ helm install quirky-walrus wordpress --namespace default
$ helm test quirky-walrus
Pod quirky-walrus-credentials-test pending
Pod quirky-walrus-credentials-test pending
Pod quirky-walrus-credentials-test pending
Pod quirky-walrus-credentials-test succeeded
Pod quirky-walrus-mariadb-test-dqas5 pending
Pod quirky-walrus-mariadb-test-dqas5 pending
Pod quirky-walrus-mariadb-test-dqas5 pending
Pod quirky-walrus-mariadb-test-dqas5 pending
Pod quirky-walrus-mariadb-test-dqas5 succeeded
NAME: quirky-walrus
LAST DEPLOYED: Mon Jun 22 17:24:31 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: quirky-walrus-mariadb-test-dqas5
Last Started: Mon Jun 22 17:27:19 2020
Last Completed: Mon Jun 22 17:27:21 2020
Phase: Succeeded
TEST SUITE: quirky-walrus-credentials-test
Last Started: Mon Jun 22 17:27:17 2020
Last Completed: Mon Jun 22 17:27:19 2020
Phase: Succeeded
[...]
Notas
- Puede definir tantas pruebas como desee en un solo archivo yaml o distribuirlas
en varios archivos yaml en el directorio
templates/
. - Le invitamos a anidar su suite de pruebas en un directorio
tests/
como<chart-name>/templates/tests/
para mayor aislamiento. - Una prueba es un
gancho de Helm, por lo que anotaciones
como
helm.sh/hook-weight
yhelm.sh/hook-delete-policy
pueden usarse con recursos de prueba.