- Uncloud es una herramienta de código abierto que permite desplegar y escalar aplicaciones web en contenedores en varios servidores sin Kubernetes
- Mantiene un flujo de trabajo basado en Docker Compose y al mismo tiempo ofrece despliegues sin tiempo de inactividad, HTTPS automático y escalado entre servidores
- Sin un plano de control central, cada máquina se conecta mediante una red P2P basada en WireGuard, por lo que el clúster puede seguir operando aunque algunos servidores estén fuera de línea
- Incluye HTTPS automático mediante proxy inverso Caddy, descubrimiento de servicios basado en DNS integrado y balanceo de carga
- También puede desplegarse del mismo modo en entornos híbridos de nube y on-premise, lo que permite mantener el control de la infraestructura y la previsibilidad de costos
Flujo de trabajo similar a un PaaS
- Ofrece una experiencia de despliegue sencilla como Heroku o Fly.io, pero manteniendo el control total sobre los servidores y los datos
- Estructura de costos predecible en lugar de cobro por solicitud
- Sin dependencia de proveedor, con posibilidad de depurar usando herramientas SSH estándar
- Con una arquitectura amigable con Docker Compose, permite compilar, hacer push y desplegar con un solo comando
- No se necesita registro de imágenes y admite despliegues rolling sin tiempo de inactividad
- Permite escalado por réplicas a través de múltiples máquinas
Diseño de bajo mantenimiento
- No requiere plano de control ni gestión de quórum, minimizando la complejidad operativa
- Permite comunicación segura entre máquinas sin abrir puertos
- Integra descubrimiento automático de servicios y emisión automática de HTTPS basada en Let's Encrypt
Cómo funciona
- En lugar de un clúster complejo, se compone de una red simple de máquinas, ofreciendo una infraestructura estable sin la carga del mantenimiento
- Cada máquina participa en una red mesh de WireGuard, realizando descubrimiento automático de pares y NAT traversal
- Los contenedores reciben una IP única y pueden comunicarse directamente entre servidores
- Con una arquitectura totalmente distribuida, cada máquina sincroniza el estado del clúster sin necesidad de un nodo de control central
- Aunque algunas máquinas estén fuera de línea, el clúster sigue funcionando
- Controla toda la infraestructura con una CLI similar a Docker
- Con acceso SSH a una sola máquina se pueden realizar despliegue, monitoreo y escalado
Funciones principales
- Despliegue en cualquier lugar: compatible con cualquier máquina Linux, como VM en la nube, servidores dedicados u on-premise
- HTTPS automático: el proxy inverso Caddy integrado emite certificados TLS sin configuración y habilita HTTPS
- Balanceo de carga: distribuye el tráfico entre réplicas de contenedores repartidas en varias máquinas
- Descubrimiento de servicios: el DNS integrado rastrea automáticamente la ubicación de los servicios dentro de la red
- Infrastructure as Code: permite definir toda la pila de la aplicación con archivos Docker Compose existentes
- Sin dependencia de proveedor: permite mezclar libremente nube y hardware propio
1 comentarios
Opinión de Hacker News
Hola, soy el creador. Gracias por compartirlo
Uncloud es un orquestador de contenedores sin control plane. En pocas palabras, es como Docker Compose distribuido entre varias máquinas, con malla WireGuard automática, descubrimiento de servicios y HTTPS mediante Caddy. Cada máquina sincroniza el estado p2p del clúster usando Corrosion de Fly.io, así que no hace falta mantener quórum
Después de operar Kubernetes tanto en startups como en unicornios, me di cuenta de que la mayoría de los equipos en realidad solo necesita correr bien contenedores en unas cuantas máquinas, con networking, rollouts y HTTPS. La sobrecarga operativa de K8s es demasiado grande para eso
Las características principales son las siguientes
Enlace del proyecto: https://github.com/psviderski/uncloud
uc machine initejecute internamentecurl | bashcon privilegios de root me parece riesgoso en términos de seguridad. Me gustaría probarlo, pero no creo que lo correrá en máquinas realesHe pasado la mayor parte de mi carrera con Kubernetes, y tengo curiosidad por cuál sería la ventaja de una arquitectura sin control plane. Para mí, el control plane es justamente la función central de K8s.
Manejar cientos de nodos y decenas de miles de contenedores no es una gran carga porque los clústeres administrados se actualizan solos. Me pregunto si el dolor de la gente al autohospedar K8s es el contexto del que salen alternativas como esta
Incluso si la red se particiona, cada partición puede seguir funcionando de manera independiente. Es como recuperar la simplicidad de la época de Chef o Ansible, pero con las lecciones aprendidas de K8s
El proyecto está muy bueno. Pienso probarlo más adelante.
Si buscas una alternativa más simple, Kamal también está bien. Es una herramienta probada en producción y operada por una empresa que se salió por completo de K8s y de la nube
Me pregunto si hay alguna función que aplique automáticamente hardening del servidor cuando indicas los servidores
Soy usuario de Docker Swarm. Uncloud es la primera alternativa que de verdad me parece interesante
Tengo las siguientes dudas
x-ports: app.example.com:8000/https.O también se puede personalizar la configuración de Caddy con
x-caddy: Caddyfile. Para más detalles, ver la documentación oficialActualmente no existe una función de aislamiento de red entre stacks. La discusión relacionada sigue en GitHub Discussion #94.
Me interesa saber qué comportamiento esperarías
La respuesta a las preguntas 2 y 3 es “todavía no” y “por ahora sí”. La discusión relacionada está en Discussion #94
Como alguien que ha usado Swarm, me da curiosidad saber qué cosas te parecieron insuficientes o incómodas en Swarm que Uncloud podría mejorar
Es un proyecto realmente genial. También vale la pena revisar otras herramientas sobre temas parecidos
Si conocen más, estaría bueno que las agregaran
Hace poco probé Coolify y me dio la impresión de estar algo incompleto. Ahora uso Dokku, pero me gustaría que tuviera una mejor UI para administrar bases de datos
Estoy satisfecho con k3s, pero me alegra ver intentos nuevos en esa zona intermedia entre Docker Compose y K8s completo. En particular, la integración con WireGuard me parece interesante
Es una herramienta realmente genial. Gracias por el trabajo.
Tengo curiosidad por cómo funciona la replicación de estado (state replication) del backend. Se mencionan CRDT y el protocolo gossip, pero la implementación concreta no queda del todo clara
Si no es K8s, ¿por qué no Nomad?
Es decir, fuera del hosting propio, su uso queda limitado y en la práctica no permite convertirlo libremente en servicio. Ver el texto completo de la licencia
Como referencia, comparto dos componentes p2p interesantes