This release features 4 weeks of work from 6 contributors. It brings service logs streaming, new service management commands, SSH CLI connection mode, interactive cluster connection selection, HTTP/3 support, and various improvements and bug fixes.
✨ Highlights
Service logs streaming
PR: #196
The new uc logs command streams logs from service containers across all machines in the cluster. Logs are merged from all replicas with colored output, strict timestamp ordering, and service/container identification.
You can filter logs by machine using -m/--machine, follow mode with -f, and time ranges with --since/--until.
Running uc logs without arguments streams logs from all services defined in the local Compose file.
New service commands
PRs: #165, #195. Thank you @jabr for the contribution! ❤️
-
The
uc pscommand displays all running containers in the cluster with service name, machine, state, health status, IP address, and creation time. You can sort containers by service, machine, or health status using the--sortflag.
-
New
uc startanduc stopcommands allows starting and stopping all containers of the specified services across cluster machines. The stop command supports--signaland--timeoutoptions for graceful shutdown control.
SSH CLI connection mode
PRs: #152, #173. Thank you @luislavena for the contribution! ❤️
A new ssh+cli:// connection scheme allows using the system's ssh (OpenSSH) CLI client instead of the native Go implementation of the SSH protocol for connecting to cluster machines. This makes it possible to init machines in private networks via ProxyJump, use hardened SSH agents like 1Password or Yubikey, and use existing custom host configuration from your ~/.ssh/config.
If ssh <target> works from your terminal, then uc machine init/add ssh+cli://<target> should also work.
We will make this connection mode the default after addressing the edge case of removing machines when using the ssh+cli scheme.
Interactive connection selection
PR: #170. Thank you @jabr for the contribution! ❤️
The new uc ctx connection command provides an interactive selector for choosing the preferred cluster connection among multiple configured ones.
HTTP/3 support
PR: #204. Thank you @z0rrn for the contribution! ❤️
Caddy (reverse proxy) now exposes UDP port 443 for HTTP/3 (QUIC) protocol support, enabling faster HTTPS connections for supported clients.
New managed DNS domain
Free managed DNS subdomains now use the new shorter xxxxxx.uncld.dev domain instead of xxxxxx.cluster.uncloud.run to separate the main project domain (uncloud.run) from the user cluster's domains. See tweet for more details. Existing subdomains will continue to work.
You can run uc dns release && uc dns reserve to release your old subdomain and reserve a new one under uncld.dev.
Improvements
--contextflag is now a global option available on all commands (#174)- Unix domain socket connector for local daemon connections (#186)
- Machine ID stored on connection entries in
~/.config/uncloud/config.yamlfor automatic cleanup when removing machines (#182) - Services sorted by name in
uc lsoutput IP ADDRESScolumn added touc psanduc inspectoutputCREATEDcolumn added touc pswith fallback sorting by creation time- Machine install.sh script supports
INSTALL_ONLYmode to skip daemon setup (#194) uc --helpoutput shows links to documentation and Discord- Minor documentation updates and improvements
Bug fixes
- Fixed volume driver options not being used when driver is not explicitly specified (#211)
- Fixed new Compose deployment with volumes and
--recreateflag (#176)
Upgrade to 0.15.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.15.0/uncloudd_linux_amd64.tar.gz
# ARM64
# curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.15.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
- 3c33973 chore(exec): Update TODO regarding signal forwarding
- 596bc56 chore: 'uc stop' - make --timeout default explicit, update flag and long descriptions
- bc65c73 chore: add CREATED column to 'uc ps', fallback sorting by CREATED
- 05c8117 chore: add redirect from uncloud.run/discord to discord invite
- e30ea89 chore: enable CGO to be able to build fsevent required by updated compose on macOS
- 2e655d8 chore: extract version from latest redirect in install_cli.sh (#180)
- e87207e chore: fix landing logo shadow
- f215fae chore: group deploy and service management commands in uc --help
- 4433095 chore: show links to docs and Discord for the root 'uc --help' command
- 95afc7f chore: sort 'uc inspect' containers by CREATED
- 3fbba6d chore: sort services in 'uc ls' output by name
- 3019377 chore: update logo for docs
- 53def3a chore: update white color in logo-title-dark.svg
- bf65fba feat --utc flag for 'uc logs' command to print timestamps in UTC
- 234985b feat(install): Add install-only mode to the install script (#194)
- eea8172 feat(ssh+cli): Support SSH CLI on machine init and add commands (#173)
- 4b4b721 feat(uc/caddy): expose 443/udp port for HTTP3 (#204)
- 27cfe1c feat: 'uc logs' without argements streams logs for services in the local Compose file
- a9a720f feat: Add
uc service start/stopcommands (#195) - 1d41373 feat: Interactive 'uc ctx connection` command to select preferred cluster connection (#170)
- 91a09d5 feat: add CLI connector for unix domain socket (#186)
- cb0df21 feat: add IP ADDRESS column to 'uc ps' and 'uc inspect'
- d89bfb8 feat: add
uc pscommand to list all containers in the cluster (#165) - 79dc05c feat: service logs command to stream service logs (#196)
- 76b4369 feat: store machine id on connection entries in Uncloud config so it can be removed with machine (#182)
- 1e6aaf4 feat: support filtering service logs by machine (-m/--machine)
- 796363f fix: TestCollectContainers unit tests
- 57205e1 fix: new Compose deployment with volumes and --recreate flag (fixes #176)
- 6373d40 fix: volume driver options are not used if driver if not specified [bug #210] (#211)
- f6d75d5 lint
- ebd4622 lint
- 939645e refactor: Make
--contextcli flag a global option (#174) - 75085b3 refactor: Simplify dns e2e test using new ExecContainer functionality (#178)
- 6a1cd7b refactor: replace loadProjectFromContent with compose.LoadProjectFromContent