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
volumecommand. - Context management: Switch between different cluster contexts using the new
ctxcommand. - Improved resource control: Specify CPU, memory, and environment variables for containers.
Breaking changes
- Configuration format changed from TOML to YAML
--clusterflag renamed to--context- Revised machine placement system using
--machineflag 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
- Full volume lifecycle management with
-
Compose support:
- Deploy services from Docker Compose files with
uc deploy - Support for volume, bind, and tmpfs mounts
- Environment variables and resource constraints
- Deploy services from Docker Compose files with
-
Context management:
- Switch between multiple cluster contexts with
uc ctx - Manage multiple clusters with
uc ctx lsanduc ctx use
- Switch between multiple cluster contexts with
-
Container improvements:
- CPU and memory limits with
--cpuand--memoryflags - Environment variables via
-eflag - Container user via
-uflag - Log driver configuration
- CPU and memory limits with
-
Machine management:
- Support for selecting specific uncloud version during initialising (
machine init) or adding (machine add) a new machine to the cluster
- Support for selecting specific uncloud version during initialising (
Changelog
- 948201c add VolumeScheduler with one flaky test
- df4ab40 chore(volumes): add client methods for volume management, e2e test
- 590a1b2 chore(volumes): e2e test when volume doesn't exist
- 13dea92 chore(volumes): gRPC methods for managing Docker volumes
- c6205d4 chore(volumes): map volume specs to container config, diff specs with volumes
- b3885b0 chore: activate the context of a newly initialised cluster
- 02a418a chore: add --version flag for 'machine init|add' to specify uncloud daemon version
- b605a64 chore: add e2e compose test with volumes
- 87331a9 chore: add filter to ListMachines
- 5fce84d chore: cleanup compose-basic test
- 03c2681 chore: cleanup unused machine filter struct
- 835c310 chore: delete old basic-compose.yaml fixture
- 143e68c chore: do not set default volume driver to local, distinguish behaviour when it's set or not
- f71fc57 chore: e2e tests for replicated and global deployments with volumes
- 8709ac0 chore: fix Errorf arguments
- c9452f1 chore: ignore uc binary in the repo root
- badb8ec chore: implement EvalContainerSpecChange for new container properties
- 565a8d8 chore: implement VolumeScheduler to determine what missing volumes should be created and where
- 1acb0ff chore: implement VolumesConstraint to only schedule on machines with required volumes
- 000a8a1 chore: init scheduler entities
- 6125553 chore: introduce VolumeSpec supporting different volume types (bind, volume, tmpfs)
- e5957d9 chore: map compose volumes to server spec, initial volume scheduling
- 72bf346 chore: map new container properties to Docker container configs
- 9100c22 chore: new specs for defining service volumes
- 4532b98 chore: populate ucind cluster machines with IDs
- cacfca7 chore: print message about changed context for 'ctx use' command
- fcf164d chore: refactor schedulers to work with cluster state snapshot, VolumeScheduler updates state with scheduled volumes
- 4e40a93 chore: remove anonymous volumes for ucind containers
- d8818ba chore: remove unnecessary fields from containers table in machine.db
- f467fad chore: rename cluster term to context in CLI and config, convert config toml -> yaml
- f3cb665 chore: replace machine filter with placement constraint in service spec
- 97e032c chore: update ListVolumes to accept a filter
- 45497fd chore: update api.ServiceClient interface to include service creation and removal
- edad242 chore: verify idempotency for compose deploy with volumes
- 410a95e chroe: add TODO to fix empty context in output message when adding machines
- 8ee551c cleanup
- 20b2ca2 feat(ctx): interactive ctx command to switch between cluster contexts
- 25b1731 feat(env): support env vars for services (both run command and compose)
- f8ebd94 feat(volumes): create and mount data volumes when running service with 'uc run' command
- 2f5a2c6 feat(volumes): new 'volume create|inspect|ls|rm' CLI commands to manage volumes
- 1bbefdd feat: add 'ctx ls' command to list available cluster contexts in config
- 6c2759f feat: add --cpu, --memory, --privileged, --user options for 'service run'
- 938e7d0 feat: add support for entrypoint, cpus, mem_limit, mem_reservation, priviliged, user to Compose deployment
- 9413f1c feat: define essential container spec parameters
- 343357a find optimal solution in VolumeScheduler
- 440215b fix: TestInstallCmd test
- 3ada89c fix: adding ucind cluster with tcp connections to config
- 16c876d fix: compare container specs with equate empty option (nil map == {} map)
- 33550be fix: compose deployment plan preview
- d6ff621 fix: compose deployment: use mutex to correctly collect service specs
- 9fc54c9 fix: format config.Path method
- f08d9fe refactor: 'service run' create missing volumes satisfying all placement constraints
- 7db8bba refactor: cpu and memory under Resources struct
- 7705db2 refactor: machine listing for replicated plan