This release features 3 weeks of work from 4 contributors. It's focused on deploying apps from source code, executing commands in running containers, and expanding Compose support.
✨Highlights
Deploy an app from source code
Build and deploy your apps in one command. No registry required.
Just configure a build section in your Compose file and run:
uc deploy- Builds your images locally
- Tags images with a Git version making every deployment traceable to its source commit
- Pushes images straight to your cluster machines using unregistry
- Deploys your services as usual
See the new Deploy an app guide for full details.
Watch uc deploy building and deploying a demo app (18 seconds):
uc-deploy-demo.mp4
Execute commands in running containers
You can now run interactive shells or execute one-off commands in running service containers using uc exec command.
# Start an interactive shell ("bash" or "sh" will be tried by default)
uc exec web-service
# Restore a database from an SQL dump
cat backup.sql | uc exec -T db psql -U postgres mydbGPU support
Services can now request GPU resources and device reservations through standard Compose attributes:
gpusfor GPU allocationdeploy.resources.reservations.devicesfor device access
This enables deployment of workloads requiring GPU like machine learning applications and video processing services.
Nearest replica DNS
Internal DNS now supports nearest.<service>.internal resolution, which prioritises machine-local replicas by returning their IPs first in the response.
New documentation
- Deploy an app: A comprehensive how-to guide for deploying applications from source code or pre-built images
- Deploy to specific machines: Deploy services to specific machines in your cluster
- Deploy a global service: Deploy exactly one replica of a service on each machine in your cluster
- Compose file reference: Image tag template: Template syntax for tagging built images
Bug fixes
- Fixed
uc deployto push images to all machines whenx-machinesis not specified - Fixed WireGuard peer reconfiguration when machines join cluster (#155)
- Fixed image push progress percent overflow (#153)
Additional updates
- Container images displayed in removal plan operations
- Shorter container IDs shown in deploy plan operations
- Corrosion version pinned to v0.2.2
- Docker and Compose dependencies updated to latest versions
- Installation script now respects
GITHUB_TOKENenvironment variable
Upgrade to 0.14.0
Uncloud CLI locally
To upgrade the Uncloud CLI (uc) locally:
# Homebrew (macOS, Linux)
brew upgrade uncloud
# Install script (macOS, Linux)
curl -fsS https://get.uncloud.run/install.sh | shMachine daemon
To upgrade the Uncloud daemon on your machines, run the following commands on each machine:
# AMD64
curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.14.0/uncloudd_linux_amd64.tar.gz
# ARM64
# curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.14.0/uncloudd_linux_arm64.tar.gz
tar -xf uncloudd.tar.gz
sudo install uncloudd /usr/local/bin/uncloudd
rm uncloudd uncloudd.tar.gz
sudo systemctl restart uncloudChangelog
- 48d2239 Connect to remote SSH nodes using SSH CLI (#152)
- 1c3f210 bug: Use GITHUB_TOKEN if present in scripts/install_cli.sh (#169)
- 2f5f515 build: Bump go tests timeout to 15 min
- 90d244f chore: 'uc image push' fix long description
- 6da8e98 chore: add TODO to refactor docker client method
- 7e366ff chore: add gitutils package to inspect local git repo
- 89db50e chore: consistent casing
- 4cdbaa20b909ef6ae47a386b9d7b5be84996fd8c chore: enable CGO to be able to build fsevent required by updated compose on macOS
- 497b948 chore: fix the examples for 'uc image push' command after changing default
- 722615c chore: go mod tidy
- 328ace1 chore: implement image template processing using git repo state (not enabled)
- dde23b5 chore: increase timeout 5->30s for waiting for machines to be ready in ucind cluster
- bd8a843 chore: inspecrt git state without an error if git utility not available
- 4de068c chore: pin corrosion version to the latest working version v0.2.2
- 9a0b1a4 chore: print (custom Caddy config) for service ENDPOINTS if x-caddy is used
- 2d292ed chore: remove x-machines from website compose
- 6e4439b chore: show container image for the remove container plan operation
- 2b93a1c chore: update --container flag help that accepts ID prefix
- 3ac5992 chore: use short container ID for stop operation in deploy plan
- 06d9885 doc: Generate docs
- c3ecd37 feat(build): --push and --push-registry flags to push build images to cluster or registries
- 65c3e0a feat(build): print if no services to build, build dependencies --dep, check build configuration --check
- 882f2f5 feat(build,deploy): build service images using compose (bake/buildkit), push to cluster, and deploy
- abea3e2 feat: "exec" command to start processes inside remote containers (#139)
- 15d4ef5 feat: Allow container matching by ID prefix (#175)
- 6af7a98 feat: Allow to match containers against truncated ID (#160)
- ba6290d feat: add "nearest..internal" mode to internal DNS (#159)
- 5c4f49b feat: new cbuild (compose build) command using Compose implementation
- 26c3699 feat: process image templates in compose services, set default git-based tags if not specified
- 3b4bcb7 feat: support service.gpus and reservations.devices (#156)
- 30bb33f fix(exec): Handle context cancellation server-side
- 9770151 fix: 'uc deploy' push image to all machines if x-machines is not specified
- 0153e9f fix: progress percent overflow in image push (#153)
- b6dfc21 fix: reconfigure WireGuard peers when listed >=1 machines in cluster store (fixes #155)
- 4d591f9 lint
- 809d1ec lint
- d0c23fa lint: fix ineffassign
- 7bff706 ref: Rewrite config tests with Exec
- 4bc47af refactor: strip project name from volume names without mangling project name