Agregar nodos
- En el dashboard, Nodos → Generar token de unión (un solo uso, vence en 1 hora).
- 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 nodounreachablesigue sin recibir instancias aunque se lo reactive. - Quitar: sólo si el nodo no tiene instancias activas. Un nodo
unreachablese 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 shen 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).