Skip to content

Hit #3

Latest

Choose a tag to compare

@Dagyss Dagyss released this 13 May 00:30
· 20 commits to main since this release
2b84121

Sobel contenerizado asincrónico y escalable

Infraestructura Kubernetes en GKE

  • Cluster principal: Desplegado con Terraform, maneja todos los recursos del sistema.
  • Nodegroup Infraestructura: Aloja servicios críticos:
    • RabbitMQ: Sistema de colas para coordinar split y joiner.
    • Redis: Almacenamiento de estado y control de locks para tareas asíncronas.
  • Nodegroup Aplicaciones: Aloja componentes de la aplicación:
    • API REST para recepción de imágenes y estado, que divide la imagen en segmentos.
    • Servicio reconstructor que recombina los segmentos en la imagen final.
  • Máquinas Virtuales Externas: Provisionadas fuera del cluster:
    • Instancias gestionadas por Terraform con autoscaling.
    • Ejecutan los workers que aplican el filtro Sobel de forma asíncrona.

Pipelines de despliegue (GitHub Actions)

  1. Pipeline: Infraestructura Kubernetes
    • terraform init, plan, apply para crear el cluster y los nodegroups.
    • Despliegue de RabbitMQ y Redis vía manifiestos Kubernetes.
    • kubectl apply de Deployment y Services.
    • Creación de instancias con user_data para instalar Docker y lanzar el worker.

Flujo de ejecución y testeo

  1. Push al repositorio
    • Desencadena los GitHub Actions de los pipelines configurados.
  2. Verificación de despliegue
    • Comprobar el estado y logs en la sección Actions de GitHub.
  3. Prueba de la API REST
    • Obtener la IP del servicio maestro:
      kubectl get svc master -n apps -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    • Ejecutar:
      • POST /processAndPublish (form-data: image y partes).
      • GET /task/status/{id}.
      • GET /task/images/{id}.