Despliega tu propia plataforma de testing unificado en Kubernetes con Testkube
¿Te gustaría centralizar y automatizar las pruebas de tus microservicios desde el propio clúster de Kubernetes? Hoy te traigo un proyecto orientado a equipos de desarrollo y DevOps que desean monitorizar la salud de aplicaciones y ejecutar pruebas automáticas ante cualquier cambio: Testkube.
¿Qué es Testkube?
Testkube es un framework open source enfocado en la orquestación de pruebas automáticas desde Kubernetes. Permite ejecutar tests de diferentes tipos (unitarios, integración, E2E, etc.) en respuesta a eventos como actualizaciones de ConfigMaps, despliegues o cambios en recursos del clúster.
Esto lo convierte en un aliado para mantener la calidad del software, detectar regressions rápidas, y entregar mayor estabilidad en los despliegues continuos.
Además, sus resultados pueden visualizarse en tiempo real, facilitando Troubleshooting y colaboración entre testers y desarrolladores.
¿Por qué instalar Testkube en tu clúster?
- Automatiza pruebas bajo demanda: actívalas según eventos o con pipelines CI/CD.
- Unifica reporting y logs: centraliza los resultados y observabilidad de pruebas.
- Escala tus pruebas: ejecuta tests en paralelo por namespaces o servicios.
- Compatibilidad: soporta Cypress, Postman, Playwright, Bash, entre otros frameworks populares.
Despliegue de Testkube con Kubernetes
A continuación, te muestro el YAML necesario para un entorno funcional mínimo con:
- Testkube Operator
- Un test sencillo ejecutado con Bash
- La configuración necesaria para visualizar los resultados desde el dashboard propio
1. Deploy del Operator y API de Testkube
Lo más sencillo es utilizar los manifests oficiales.
Pero aquí tienes el YAML esencial para instalarlo (usa namespace testkube):
apiVersion: v1
kind: Namespace
metadata:
name: testkube
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: testkube-operator
namespace: testkube
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: testkube-operator
namespace: testkube
spec:
replicas: 1
selector:
matchLabels:
app: testkube-operator
template:
metadata:
labels:
app: testkube-operator
spec:
serviceAccountName: testkube-operator
containers:
- name: operator
image: kubeshop/testkube-operator:v1.16.5
ports:
- containerPort: 8088
2. Despliega el dashboard de Testkube
El dashboard es opcional, pero muy recomendable para visualizar pruebas y logs. Puedes exponerlo (solo para ejemplos y desarrollo) usando NodePort:
apiVersion: v1
kind: Service
metadata:
name: testkube-dashboard
namespace: testkube
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30080
selector:
app: testkube-dashboard
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: testkube-dashboard
namespace: testkube
spec:
replicas: 1
selector:
matchLabels:
app: testkube-dashboard
template:
metadata:
labels:
app: testkube-dashboard
spec:
containers:
- name: dashboard
image: kubeshop/testkube-dashboard:v1.16.5
ports:
- containerPort: 8080
Accede a http://IP_DE_TU_NODE:30080 para ver el dashboard.
3. Define un test y ejecútalo automáticamente
Supongamos que quieres lanzar un script Bash en cada despliegue de tu app.
Define el test y el trigger:
apiVersion: executor.testkube.io/v1
kind: Executor
metadata:
name: bash-executor
namespace: testkube
spec:
image: kubeshop/testkube-executor-bash:1.9.5
executor_type: job
types:
- bash
---
apiVersion: tests.testkube.io/v3
kind: Test
metadata:
name: hello-world-bash-test
namespace: testkube
spec:
type: bash
content:
type: string
data: |
#!/bin/bash
echo "🧪 Test: hello world desde Testkube!"
exit 0
---
apiVersion: triggers.testkube.io/v1
kind: TestTrigger
metadata:
name: on-configmap-change
namespace: testkube
spec:
resource: configmap
resourceSelector:
matchLabels:
monitored: "yes"
event: update
action:
type: runTest
params:
test: hello-world-bash-test
Este trigger ejecuta el test hello-world-bash-test cada vez que un ConfigMap con la etiqueta monitored: "yes"
es actualizado. Ideal para comprobar que todo sigue OK tras cambios de configuración.
Consejos extra: troubleshooting rápido ✨
- ¿No ves resultados en el dashboard? Comprueba los logs del operador con kubectl -n testkube logs deploy/testkube-operator.
- Puedes crear tests de tipo Postman, Cypress o Playwright sustituyendo el
type: bash
y el executor. - Integra Testkube en tu pipeline CI/CD usando triggers que respondan a despliegues o commits (consulta los docs oficiales para detalles avanzados).
- Despliega en un namespace aislado si quieres evitar conflictos en entornos de producción.
¡Y esto es solo el principio! Una vez tengas Testkube funcionando, puedes integrarlo con tus repositorios, pipelines y monitorizar la salud de tus servicios con mayor facilidad, todo sin salir de Kubernetes.