Despliega tu propia plataforma de testing unificado en Kubernetes con Testkube

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:

  1. Testkube Operator
  2. Un test sencillo ejecutado con Bash
  3. 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.

Avatar

Por Mid