v0.6.0
psviderski/uncloudv0.6.0Apr 25, 2025by psviderski
AI Summary
This release (v0.6.0) introduces major new capabilities including Docker Compose file deployment support, a new volume management system for creating and managing persistent volumes across the cluster, and context management for switching between multiple cluster configurations. The release also improves container resource controls with CPU/memory limits and environment variable support.
Key Highlights
- Docker Compose deployment support with volumes, environment variables, and resource limits
- New volume management system with create/ls/inspect/rm commands and cluster-wide scheduling
- Context management (ctx command) for switching between cluster configurations
- Improved container resource controls with --cpu, --memory, and -e flags
- Machine version selection support during initialization and when adding machines
Breaking Changes
- Configuration format changed from TOML to YAML
- --cluster flag renamed to --context
- Revised machine placement system using --machine flag instead of machine filters
New Features
- Volume management: Full lifecycle management with volume create/ls/inspect/rm commands, scheduling across machines based on service constraints, automatic volume creation for services
- Compose support: Deploy from Docker Compose files, support for volume/bind/tmpfs mounts, environment variables and resource constraints
- Context management: Switch between clusters with ctx command, list and manage contexts with ctx ls and ctx use
- Container improvements: CPU and memory limits, environment variables via -e flag, container user via -u flag, log driver configuration
- Machine management: Select specific uncloud version during machine init or add operations
Full Release Notes
## Highlights
- **Extended Docker Compose support:** 🎉 Added support for deploying services from Docker Compose files with volumes, environment variables, resource limits, and more.
- **New volume management:** Create, list, inspect, and remove volumes across your cluster with the new `volume` command.
- **Context management:** Switch between different cluster contexts using the new `ctx` command.
- **Improved resource control:** Specify CPU, memory, and environment variables for containers.
## Breaking changes
- Configuration format changed from TOML to YAML
- `--cluster` flag renamed to `--context`
- Revised machine placement system using `--machine` flag instead of machine filters
## Features and improvements
- **Volume management:**
- Full volume lifecycle management with `uc volume create/ls/inspect/rm`
- Support for volume scheduling across machines based on service constraints
- Automatic volume creation for services that need them
- **Compose support:**
- Deploy services from Docker Compose files with `uc deploy`
- Support for volume, bind, and tmpfs mounts
- Environment variables and resource constraints
- **Context management:**
- Switch between multiple cluster contexts with `uc ctx`
- Manage multiple clusters with `uc ctx ls` and `uc ctx use`
- **Container improvements:**
- CPU and memory limits with `--cpu` and `--memory` flags
- Environment variables via `-e` flag
- Container user via `-u` flag
- Log driver configuration
- **Machine management:**
- Support for selecting specific uncloud version during initialising (`machine init`) or adding (`machine add`) a new machine to the cluster
## Changelog
* 948201cb6fe419e3ee3d67a58f66d2e3e7aef184 add VolumeScheduler with one flaky test
* df4ab40e12249a8cbcbb95d3fec41af32e6a763e chore(volumes): add client methods for volume management, e2e test
* 590a1b231f80d0d8bc7e13f26fa9ce2c52fc3b0f chore(volumes): e2e test when volume doesn't exist
* 13dea92311f0e102deb456353bf1bfd6c5b24890 chore(volumes): gRPC methods for managing Docker volumes
* c6205d4f5779261a3b73c2595b88a44b84bdfe7e chore(volumes): map volume specs to container config, diff specs with volumes
* b3885b08889da47e450e18fee3feb67bd8b7b5bb chore: activate the context of a newly initialised cluster
* 02a418aafbdaf02adb17146b82686e9567c6bf7d chore: add --version flag for 'machine init|add' to specify uncloud daemon version
* b605a64fbe02d338bdd1b28d91d230e56fd444e1 chore: add e2e compose test with volumes
* 87331a926563150d027499bba40e90d4a8952bb9 chore: add filter to ListMachines
* 5fce84d33c3f6505fc4e2d97acad54bc0d4301b9 chore: cleanup compose-basic test
* 03c2681792cfb285828b607e275931135d38b730 chore: cleanup unused machine filter struct
* 835c310987abfe170c84fea3830e1020d6fedb1d chore: delete old basic-compose.yaml fixture
* 143e68cc9563fcebae15de3a84bf0c67f5cc7c76 chore: do not set default volume driver to local, distinguish behaviour when it's set or not
* f71fc57f34facd2be6f9128b6d6287fc4d6b9d8e chore: e2e tests for replicated and global deployments with volumes
* 8709ac0ed5ac8f5053872b922825fd6d06cca567 chore: fix Errorf arguments
* c9452f1509ae47868828e8fc957c675cf036992a chore: ignore uc binary in the repo root
* badb8ecd3cbd62381ed9ecee53b675ed4833ffe7 chore: implement EvalContainerSpecChange for new container properties
* 565a8d8366475b435faec05ddca269855ee3b21d chore: implement VolumeScheduler to determine what missing volumes should be created and where
* 1acb0ff1101c6924346f92b6d087c87169fa7f70 chore: implement VolumesConstraint to only schedule on machines with required volumes
* 000a8a1d3e74bb985e2774e0ce9fc51937b66205 chore: init scheduler entities
* 6125553a97f17d0e19d236cb102a0a34ace1e324 chore: introduce VolumeSpec supporting different volume types (bind, volume, tmpfs)
* e5957d9d6b0eac4cb8cdd3264ef7a0e9c8ee66b2 chore: map compose volumes to server spec, initial volume scheduling
* 72bf34632fc44b4d0a8a606bea0a89f3b1702845 chore: map new container properties to Docker container configs
* 9100c22e7faf43deca3393f1aded4abaa6466b97 chore: new specs for defining service volumes
* 4532b985d47847ae46d644d05115e56882429df6 chore: populate ucind cluster machines with IDs
* cacfca7a88c23ad9b5a1c5ae2a053b9feaa8bb35 chore: print message about changed context for 'ctx use' command
* fcf164dda1b003a2993506b1a704f8ad04b9e399 chore: refactor schedulers to work with cluster state snapshot, VolumeScheduler updates state with scheduled volumes
* 4e40a939916d4bef1385f413aecac56d6cd3260b chore: remove anonymous volumes for ucind containers
* d8818ba77015b72bec2a92a1fefce22fc227e6b1 chore: remove unnecessary fields from containers table in machine.db
* f467fad84c25040831d4ff698f05f52f22a05c9b chore: rename cluster term to context in CLI and config, convert config toml -> yaml
* f3cb6657aec8a4cfe48effc6a36cf68e2d4d7306 chore: replace machine filter with placement constraint in service spec
* 97e032cb7bbdcc9b218c58cc769ebe5a615b8bb2 chore: update ListVolumes to accept a filter
* 45497fd20cf791a0c5f8d35061a68cabad6616f3 chore: update api.ServiceClient interface to include service creation and removal
* edad2429c50f1e5c1cfd370f2f3e3d997f587ea2 chore: verify idempotency for compose deploy with volumes
* 410a95ec88a55d2a32cd5136b6fc89df4b838d9a chroe: add TODO to fix empty context in output message when adding machines
* 8ee551ca8fef6bf56aa66f15370d3c4c1810c784 cleanup
* 20b2ca2ea536ec5814c746d34c398ec3f6912d3c feat(ctx): interactive ctx command to switch between cluster contexts
* 25b173128ac9944d51b01f87d15a65ddc9e4e662 feat(env): support env vars for services (both run command and compose)
* f8ebd94a796c47b2b5b85b1f445027836c7f36ab feat(volumes): create and mount data volumes when running service with 'uc run' command
* 2f5a2c63443d7a09987b45388cab8a32b79776e4 feat(volumes): new 'volume create|inspect|ls|rm' CLI commands to manage volumes
* 1bbefdd0d2481d8715f4515a2304a2cccf3bd905 feat: add 'ctx ls' command to list available cluster contexts in config
* 6c2759f3151449f1821e55358c5d9fb183e0658b feat: add --cpu, --memory, --privileged, --user options for 'service run'
* 938e7d05c009e9f38750843dd907acb43b67f298 feat: add support for entrypoint, cpus, mem_limit, mem_reservation, priviliged, user to Compose deployment
* 9413f1c0b1dda7099f92100f47e5b79663774e44 feat: define essential container spec parameters
* 343357adf9fa5661d4dcf063a5b79f0f5e7f839c find optimal solution in VolumeScheduler
* 440215b811e7888fbd6a4f13ac2aed4378a77fb8 fix: TestInstallCmd test
* 3ada89c4f81ecf0a1c35d3ed452dff1636a2bce3 fix: adding ucind cluster with tcp connections to config
* 16c876d83fca6de7c24802a449170bd3c59ceb1b fix: compare container specs with equate empty option (nil map == {} map)
* 33550be65e22534ad8831871a1fef768c58313c0 fix: compose deployment plan preview
* d6ff62159d419d0a440ba0c089370734ac80d6d1 fix: compose deployment: use mutex to correctly collect service specs
* 9fc54c9d64360ad0cb92d3d7a65ab2467a64d32d fix: format config.Path method
* f08d9fe405d28d5ee5fbc144a6fd58618d8795dc refactor: 'service run' create missing volumes satisfying all placement constraints
* 7db8bba6ea2c69100f73bfd1cf9b640b8ed20d5d refactor: cpu and memory under Resources struct
* 7705db2c4f9dc620ce67c4700b07c56e5a4f7a62 refactor: machine listing for replicated plan