433 karma · joined July 15, 2024
ex-Canva, ex-JetBrains, ex-Wargaming
Contacts:
https://x.com/psviderski
https://t.me/spyyy
me@psviderski.nameThis trades off some automation for simplicity. Although, this approach may requires manual intervention when a machine fails permanently.
While Kubernetes offers power at the cost of complexity, Uncloud focuses on simplicity for common deployment workflows.
Progress from this month:
- Enhanced Docker Compose support: You can now deploy your entire stack from standard Docker Compose files. This includes volumes, environment variables, resource limits, scaling and logging configuration.
- Volume management: Create and manage Docker volumes across your cluster with automatic scheduling based on volume location.
- Context management: CLI command to quickly switch between multiple clusters, e.g. homelab and production one
I'm particularly excited about the volume management system as it provides the cluster semantics to the good old Docker volumes. It uses a constraint-based scheduler that ensures services sharing volumes are properly co-located.If you're seeking something between "just Docker" and full Kubernetes for deploying applications on your own infrastructure, I'd love to get your feedback on Uncloud.
Key updates from the past month:
- New demo screencast [2]: Deploy a highly available web app with automatic HTTPS across cloud VMs and on-premises in just a couple minutes
- Added initial Docker Compose support for service deployment. The same Compose can be used for developing locally and deploying to your cluster
- Completely revamped how service and container specifications are stored, enabling proper implementation of the service 'scale' command and selective container recreation
My goal for Uncloud is to create a more capable and modern replacement for Docker Swarm, which is no longer being actively developed.
[1]: https://github.com/psviderski/uncloud
[2]: https://github.com/psviderski/uncloud?tab=readme-ov-file#-qu...
I suspect that I will implement support for regular local Docker volumes such that each service container will use its own volume on the machine it runs on. Uncloud won't automatically replicate data between volumes as storage replication adds significant complexity and potential failure modes. Apps that need HA such as databases can handle their own replication. I'm getting inspiration from Fly for this: https://fly.io/docs/volumes/overview/. Maybe it would make sense to implement handy commands for cloning, moving, and backing up volumes between machines, not sure yet.
Corrosion (the embedded CRDT SQLite) is only used for Uncloud's internal state management, not for application data.
[1]: https://github.com/psviderski/uncloud
[2]: https://uncloud.run