mirror of
https://github.com/psviderski/uncloud.git
synced 2026-11-10 20:54:17 +00:00
142 lines
5.5 KiB
Markdown
142 lines
5.5 KiB
Markdown
---
|
|
sidebar_position: -17.0
|
|
sidebar_label: v0.17.0
|
|
---
|
|
|
|
# v0.17.0
|
|
|
|
This page mirrors the [GitHub release](https://github.com/psviderski/uncloud/releases/tag/v0.17.0), which also includes
|
|
the full list of commits.
|
|
|
|
This release brings container health monitoring with automatic rollback during rolling deployments, Compose spec support for `healthcheck`, `devices`, and `ulimits`, and various reliability improvements.
|
|
|
|
## ✨ Highlights {#highlights}
|
|
|
|
### Container health monitoring and rollback
|
|
|
|
Changes: [7a9eac5](https://github.com/psviderski/uncloud/commit/7a9eac593f9be0f02b42b1bef5b82f311e6af243), [7b88040](https://github.com/psviderski/uncloud/commit/7b88040c73a43e1dea8db79513fec1c3cd5eac79), [ce3cb8a](https://github.com/psviderski/uncloud/commit/ce3cb8a34f3ae027a4c17b3425eb58c466ce3dbc)
|
|
|
|
Rolling deployments now monitor crashes and health checks after starting new containers. If a container keeps restarting or becomes unhealthy, the deployment automatically rolls it back and fails to prevent downtime.
|
|
|
|
https://github.com/user-attachments/assets/4ee73048-9ca2-4c8a-b075-f8c6a0840ee7
|
|
|
|
#### Compose `healthcheck` support
|
|
|
|
Compose files now support the [`healthcheck`](https://github.com/compose-spec/compose-spec/blob/main/spec.md#healthcheck) attribute, allowing you to define health checks for your services:
|
|
|
|
```yaml
|
|
services:
|
|
app:
|
|
image: myapp
|
|
healthcheck:
|
|
test: curl -f http://localhost:8000/health
|
|
interval: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
start_interval: 1s
|
|
```
|
|
|
|
Use `uc deploy --skip-health` flag to bypass health monitoring for faster emergency deployments.
|
|
|
|
See [Rolling deployments](/docs/guides/deployments/rolling-deployments) for more details on how rolling deployments work and how to configure health checks for your services.
|
|
|
|
### Control container replacement order during rolling deployments
|
|
|
|
PR: [#248](https://github.com/psviderski/uncloud/pull/248). Thanks to [@nick-potts](https://github.com/nick-potts) for the contribution ❤️
|
|
|
|
You can now control the order of container replacement during rolling deployments with `deploy.update_config.order` in your Compose file:
|
|
- `start-first` (default): starts a new container before stopping the old one
|
|
- `stop-first`: stops the old container before starting a new one (brief downtime)
|
|
|
|
```yaml
|
|
services:
|
|
app:
|
|
image: myapp
|
|
deploy:
|
|
update_config:
|
|
order: stop-first
|
|
```
|
|
|
|
The default order automatically switches to `stop-first` if a service mounts a volume to prevent data corruption.
|
|
|
|
See [Rolling deployments](/docs/guides/deployments/rolling-deployments) for more details.
|
|
|
|
### Compose `devices` support
|
|
|
|
PR: [#250](https://github.com/psviderski/uncloud/pull/250). Thanks to [@jabr](https://github.com/jabr) for the contribution ❤️
|
|
|
|
You can now map host devices into containers, for example, Intel integrated GPU for video transcoding using the [`devices`](https://github.com/compose-spec/compose-spec/blob/main/spec.md#devices) attribute in your Compose file:
|
|
|
|
```yaml
|
|
services:
|
|
app:
|
|
image: myapp
|
|
devices:
|
|
- /dev/dri:/dev/dri
|
|
- /dev/ttyUSB0:/dev/ttyUSB0:rw
|
|
```
|
|
|
|
### Compose `ulimits` support
|
|
|
|
PR: [#244](https://github.com/psviderski/uncloud/pull/244). Thanks to [@ipaddicting](https://github.com/ipaddicting) for the contribution ❤️
|
|
|
|
You can now set [`ulimits`](https://github.com/compose-spec/compose-spec/blob/main/spec.md#ulimits) for service containers in your Compose file. For example, to increase the maximum number of open files:
|
|
|
|
```yaml
|
|
services:
|
|
app:
|
|
image: myapp
|
|
ulimits:
|
|
nofile:
|
|
soft: 65536
|
|
hard: 65536
|
|
```
|
|
|
|
### Auto-provision volumes for global services
|
|
|
|
PR: [#243](https://github.com/psviderski/uncloud/pull/243). Thanks to [@zasdaym](https://github.com/zasdaym) for the contribution ❤️
|
|
|
|
When deploying a [global service](/docs/guides/deployments/deploy-global-services) with a volume, the volume is now automatically created on all machines in the cluster.
|
|
|
|
## Improvements
|
|
|
|
- SSH connections with `ssh+cli://` prefix (use `ssh` CLI instead of Go native SSH implementation) reuse a single SSH connection via control socket - significantly speeds up `uc` commands
|
|
- Improved `uc image push` support on macOS by always running proxy to virtualised Docker (except OrbStack that doesn't require it)
|
|
- Global service deployment stops all running conflicting containers, e.g. left from interrupted deploys, not just the first one
|
|
- Temporary socat proxy containers created by `uc image push` are labeled with `uncloud.managed`
|
|
|
|
## Bug fixes
|
|
|
|
- Fixed IPv6 address formatting for HTTP URLs ([#254](https://github.com/psviderski/uncloud/pull/254))
|
|
- Fixed `uc image push` when using Rancher Desktop locally ([#251](https://github.com/psviderski/uncloud/pull/251))
|
|
- Fixed `uc machine init` to reset an already initialised machine when using `ssh+cli://` connection
|
|
|
|
## Upgrade to 0.17.0
|
|
|
|
### Uncloud CLI locally
|
|
|
|
To upgrade the Uncloud CLI (`uc`) locally:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# AMD64
|
|
curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.17.0/uncloudd_linux_amd64.tar.gz
|
|
# ARM64
|
|
# curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.17.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
|
|
```
|