Skip to content

Backend API ​

El backend es un único servidor Express (server.js) que proporciona tanto endpoints REST API como conexiones WebSocket.

Estructura del Servidor ​

js
server.js          // Entrada principal — app Express, rutas K8s, setup WebSocket
routes/
├── aws.js         // Endpoints de servicios AWS
├── gcp.js         // Endpoints de servicios GCP
├── helm.js        // Repositorios Helm, busqueda de charts, instalacion y releases
├── envManager.js  // Gestión de perfiles/credenciales
├── localShell.js  // WebSocket de terminal local
└── systemTools.js // Detección de herramientas CLI

Endpoints REST API ​

Kubernetes ​

MétodoRutaDescripción
GET/api/contextsListar todos los contextos kubeconfig
POST/api/contextCambiar contexto activo
DELETE/api/context/:nameEliminar un contexto
GET/api/namespacesListar namespaces
GET/api/:ns/podsListar pods
GET/api/:ns/pods/:name/yamlObtener YAML del pod
DELETE/api/:ns/pods/:nameEliminar pod
POST/api/:ns/deployments/:name/restartReiniciar deployment
POST/api/:ns/deployments/:name/scaleEscalar deployment
POST/api/kubeconfig/importImportar YAML kubeconfig
POST/api/kubeconfig/pathRegistrar una ruta kubeconfig existente
GET/api/:ns/:resource/:name/metricsMetricas para Pods y workloads con fallback Prometheus
GET/api/nodes/:name/metricsMetricas CPU/memoria de Node
GET/api/events/relatedEventos relacionados a un recurso o Node
POST/api/nodes/:name/cordonCordon de nodo
POST/api/nodes/:name/uncordonUncordon de nodo
POST/api/nodes/:name/drainDrain de nodo

Rutas Cloud ​

PrefijoMóduloDescripción
/api/cloud/awsroutes/aws.jsServicios AWS
/api/cloud/gcproutes/gcp.jsServicios GCP
/api/cloud/envsroutes/envManager.jsGestión de perfiles
/api/systemroutes/systemTools.jsDetección de herramientas CLI
/api/helmroutes/helm.jsRepositorios Helm, busqueda de charts, instalacion, inventario de releases y desinstalacion

Endpoints WebSocket ​

RutaPropósito
/ws/logsStreaming de logs de pods
/ws/execPod exec (shell interactiva)
/ws/shellShell del sistema local
/ws/ec2-shellShell de instancia EC2 (vía SSH)

Todas las conexiones WebSocket usan modo noServer con enrutamiento de upgrade manual para evitar conflictos entre múltiples instancias WebSocket.Server.

Gestion de Kubeconfig ​

El servidor fusiona kubeconfigs desde multiples fuentes:

  1. Rutas de la variable KUBECONFIG
  2. Config por defecto ~/.kube/config
  3. Configs importados por UI (~/.kube/kuadashboard_merged.yaml)
  4. Rutas registradas (~/.kube/kuadashboard_paths.json)

La fusion es no destructiva: las entradas existentes no se sobreescriben.

Fallback de Metricas ​

Las metricas Kubernetes usan primero la API metrics.k8s.io/v1beta1. Si Metrics Server no esta disponible, KuaDashboard detecta Services Prometheus y consulta metricas mediante el Service proxy del API server de Kubernetes, preservando kubeconfig y contexto activos.