Saltar al contenido principal

Comunicación entre Servicios

REST interno: gtm-fabric → node-api

gtm-fabric llama a node-api en endpoints /internal/fabric/* (sin auth, solo red interna):

EndpointCuándoPayload
GET /internal/fabric/gtms?vmId=XStartup de gtm-fabric / gtm-proxy
PATCH /internal/fabric/containers/:id/portsTras crear container Docker{previewPort, taggingPort}
POST /internal/fabric/contacts/batchCada 5s (batch flush)Array de contactos capturados
POST /internal/fabric/usageCada 5sArray de {gtmId, eventCount}
POST /internal/fabric/eventsEventos de ciclo de vida{eventType, gtmId, status}
PUT /internal/fabric/certificatesTras obtener/renovar cert SSLCert PEM + chain + expiry
POST /internal/fabric/acme-accountsTras registrar cuenta ACMECredentials ACME
GET /internal/fabric/domains?vmId=X&status=YBackup scheduler (cada 1h)
PATCH /internal/fabric/domains/:domain/statusTras verificar/generar cert{gtmId, status, ssl_enabled, error_code}

REST interno: gtm-proxy → node-api

gtm-proxy obtiene su configuración inicial al arrancar:

Endpoints internos de gtm-proxy (puerto 9090)

MétodoPathDisparado porAcción
POST/internal/routes-reloadgtm-fabricRecarga todas las rutas desde node-api
POST/internal/ssl-reloadgtm-fabricRecarga certificado SSL para un dominio
POST/internal/acme-challengegtm-fabricRegistra desafío ACME (Let's Encrypt)
DELETE/internal/acme-challenge/:tokengtm-fabricElimina desafío ACME
GET/internal/healthHealth check (retorna count de rutas)

REST: node-api → gtm-fabric (GtmFabricGateway)

node-api inicia comunicación hacia fabric para operaciones de dominio, certificados y custom loader:

EndpointCuándoPayload
POST /api/v1/gtm/:id/domains/addUsuario agrega dominio{domain, workspaceId, vmId}
POST /api/v1/gtm/:id/domains/verifyUsuario clickea "Verify DNS"{domain}
POST /api/v1/gtm/:id/domains/updateCambiar dominio primario{oldDomain, newDomain}
DELETE /api/v1/gtm/:id/domains/removeEliminar dominio{domain}
POST /api/v1/gtm/:id/certificates/renewScheduler 2 AM (renovación){domain, acmeAccount}
PUT /api/v1/gtm/:id/custom-loaderHabilitar custom loader{webGtmId, customLoaderDomain}

Configuración:

  • URL: GTM_FABRIC_URL (default: http://100.97.60.119:8000)
  • Auth: header X-Fabric-API-Key
  • Timeout: 30s por request
  • Conexión vía Tailscale

REST: node-api → gtm-proxy (ProxyNotifier)

node-api notifica al proxy tras cambios de dominio, loader o preview:

EndpointCuándo
POST /internal/routes-reload (puerto 9090)Tras agregar/eliminar dominio, habilitar loader, set preview

El proxy recarga todas las rutas desde node-api (GET /internal/fabric/gtms?vmId=X).

Nota: RemoveDomain (use case) ahora también llama a proxyNotifier.notifyByGtmId() después de eliminar un dominio, igual que DeleteGtms.

Ciclo de vida de un GTM