Skip to content

v0.14.0

Latest

Choose a tag to compare

@psviderski psviderski released this 12 Nov 14:47
· 35 commits to main since this release

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 mydb

GPU support

Services can now request GPU resources and device reservations through standard Compose attributes:

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

Bug fixes

  • Fixed uc deploy to push images to all machines when x-machines is 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_TOKEN environment 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 | sh

Machine 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 uncloud

Changelog

  • 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