Saltar al contenido
cloud-webv0.1.0
Documentación

Agregar nodos

  1. En el dashboard, Nodos → Generar token de unión (un solo uso, vence en 1 hora).
  2. En el nuevo servidor Linux ejecutá el comando que muestra el dashboard. Instala solo el agente, con el instalador de cloud-web-node:
curl -fsSL https://cloudweb.zondacloud.com/node.sh | sudo sh -s -- \
  --join https://cp.example.com:8443 --token TOKEN --ca-sha256 HUELLA

Antes de instalar nada, el instalador verifica el host (root, systemd, WireGuard, Docker), el checksum del agente y que el plano de control responda con la CA que indica la huella; si algo falla, lo dice y no toca la máquina. Requisitos, puertos, actualización y desinstalación están en la documentación de cloud-web-node.

El nodo aparece como ready en menos de un minuto. Los nodos pueden estar en proveedores distintos: sólo necesitan alcanzarse por red (ver Red, puertos y DNS). El comando incluye la huella de la CA del clúster (--ca-sha256): el nodo sólo confía en un plano de control cuya CA coincida con esa huella.

Qué esperar en un nodo nuevo

Un worker recién unido no tiene contenedores: docker ps ahí aparece vacío y es lo normal. El agente corre como servicio de systemd (no como contenedor), Caddy solo existe en los nodos con --ingress, el registro de imágenes está únicamente en el nodo del plano de control, y los contenedores de las apps (cw-<app>-<n>) aparecen cuando el scheduler le asigna una instancia. Un nodo degradado (sin acceso al registro) no recibe ninguna.

Para comprobar que un nodo está bien, en el nodo: systemctl is-active cloudweb-agent, journalctl -u cloudweb-agent -n 20 y sudo cloudweb-agent mesh status. Más detalle en la documentación de cloud-web-node.

Nodos de ingress

Un nodo de ingress ejecuta Caddy y sirve el tráfico HTTP(S) público hacia las apps, estén en el nodo que estén. El servidor del plano de control lo es por defecto (--no-ingress lo desactiva). Para sumar puntos de entrada, uní workers con --ingress (node.sh) y apuntá el DNS a todos ellos.

Estado de los nodos

El dashboard muestra por nodo: nombre, dirección de clúster, estado (ready, unreachable, draining), CPU, memoria, disco e instancias. Un nodo pasa a unreachable si no envía latidos durante más de 30 segundos y no recibe instancias nuevas; sus apps se reprograman en otro nodo si hay capacidad.

Drenar y quitar un nodo

  • Drenar: el nodo deja de recibir instancias y las que tiene se inician en otros nodos; la instancia vieja se detiene cuando la nueva está en ejecución. Si no hay capacidad, el dashboard lista las apps afectadas y siguen corriendo en el nodo hasta que haya lugar.
  • Reactivar: un nodo drenado vuelve a recibir instancias con el botón Reactivar (o POST /api/nodes/{id}/undrain). Los reemplazos que el drain ya inició continúan: las apps que ya se movieron no vuelven solas; las instancias nuevas sí pueden ir a este nodo de nuevo. Un nodo unreachable sigue sin recibir instancias aunque se lo reactive.
  • Quitar: sólo si el nodo no tiene instancias activas. Un nodo unreachable se puede quitar con confirmación aunque tuviera instancias (se marcan como fallidas).

Actualizar y desinstalar un nodo

  • Actualizar el agente: volver a ejecutar curl -fsSL https://cloudweb.zondacloud.com/node.sh | sudo sh en el nodo. Conserva su identidad, no gasta otro token y no lo saca del clúster.
  • Desinstalar: curl -fsSL https://cloudweb.zondacloud.com/node.sh | sudo sh -s -- --uninstall --yes. Da de baja el nodo en el plano de control y borra el agente y sus datos, sin tocar otros contenedores de Docker. Si el nodo todavía ejecuta apps, se niega salvo --force.

Agente y plano de control se publican por separado y hablan un protocolo versionado; si las versiones son incompatibles el agente lo informa en su log con el rango soportado.

Salud del nodo

La columna Salud de Nodos muestra:

  • sana: el nodo alcanza el registro de imágenes del clúster. Se agrega malla N/M: los peers de la malla con un handshake reciente sobre el total (informativo).
  • degradada: el nodo no alcanza el registro de imágenes, que necesita para bajar imágenes. Se muestra el motivo, no recibe instancias nuevas y se recupera solo cuando vuelve a alcanzarlo. Si todos los nodos están degradados, un despliegue falla con un mensaje que nombra a cada nodo y por qué.
  • desconocida: el agente no informa su salud (versión anterior) o el dato está vencido (más de 60 s). No se penaliza.

Para ver el estado de la malla de un nodo, en ese nodo: sudo cloudweb-agent mesh status (ver la documentación de cloud-web-node).