Ir al contenido
Moonin
EN

Protocolos de comunicación

Los agentes actuales de Moonin se comunican con el control plane por HTTPS usando credenciales acotadas al cluster.

Ambos agentes reciben estos valores desde el Secret compartido creado por el chart:

  • PROJECT_ID
  • CLUSTER_ID
  • CLUSTER_TOKEN

El cluster token se envia en los requests agente-a-plataforma a traves del header X-Cluster-Token. Algunas llamadas internas del Discovery Agent también incluyen un bearer header por compatibilidad, pero el modelo de confianza sigue siendo cluster-scoped, no user-scoped.

FlujoDestinoUsado porObjetivo
Sync de inventarioapi-discover.moonin.appDiscovery Agentnamespaces, Deployments, revisiones, errores, imágenes, HPAs, CronJobs y nodos
Heartbeat del clusterapi-discover.moonin.appDiscovery Agentdisponibilidad del cluster y cloud metadata
Polling de templatesapi-scaling-rules.moonin.appScaling Rules Agentlistar templates del cluster
Polling de accionesapi-scaling-rules.moonin.appScaling Rules Agentcargar acciones para un template activo
Eventos de ejecuciónapi-scaling-rules.moonin.appScaling Rules Agentnotificar apply y revert

El Discovery Agent usa dos patrones de comunicación:

  • Sincronización inicial para namespaces, Deployments y CronJobs cuando parte el lider.
  • Envios en estado estable disparados por informers y loops periodicos.

Flujo de alto nivel:

  1. Leer recursos desde la API de Kubernetes.
  2. Normalizar y sanitizar el payload cuando corresponde.
  3. Enviar por lotes cuando aplica.
  4. Publicar el resultado a la Discovery API usando autenticación del cluster.

El Scaling Rules Agent corre un reconcile fijo cada 30 segundos:

  1. Hace GET de los templates disponibles para el cluster.
  2. Evalua cuáles deben correr ahora.
  3. Hace GET de las acciones para cada template activo.
  4. Aplica cambios de HPA en el cluster.
  5. Hace POST de eventos de ejecución o rollback hacia la Scaling Rules API.

La plataforma entrega la metadata del template y el agente evalua:

  • si el template esta habilitado
  • si la hora actual sigue antes de valid_until
  • si una ejecución manual esta marcada como running
  • si la hora actual cae dentro de la ventana programada en la timezone configurada

Eso significa que el control plane define el template, mientras que el agente del cluster toma la decisión final de “corre ahora o no” para ese cluster y ese momento.

Antes de enviar metadata del cluster, el Discovery Agent puede consultar endpoints de metadata del cloud o derivar contexto desde labels de nodos. Esto ayuda a clasificar el cluster como GKE, EKS, AKS o un entorno desconocido u on-prem.

Los usuarios no llaman directamente a las APIs orientadas al cluster desde el browser. portal.moonin.app y admin.moonin.app quedan detras de límites server-side y aplican el scope del usuario ahi, mientras los agentes autentican como clusters.