Skip to content

v0.6.0

Choose a tag to compare

@leggetter leggetter released this 02 Oct 17:46
· 63 commits to main since this release
17333a1

Breaking Changes

Redis Schema Migration Required

Existing deployments must migrate Redis keys to hash-tagged format before upgrading to v0.6.0. This enables Redis Cluster support for horizontal scaling.

Schema Change

The Redis key structure has been updated to support Redis Cluster by adding hash tags:

OLD SCHEMA NEW SCHEMA
tenant:123 tenant:{123}:tenant
tenant:123:destinations tenant:{123}:destinations
tenant:123:destination:abc tenant:{123}:destination:abc

Why?

Redis Cluster distributes keys across nodes using hash slots. Without hash tags, related keys like tenant:123 and tenant:123:destinations could be on different nodes, causing CROSSSLOT errors during transactions. Hash tags {...} ensure all tenant data maps to the same hash slot, enabling atomic multi-key operations.

outpost binary behavior change

The outpost binary is now a unified CLI that consolidates server and migration operations.
The binary interface has changed:

Before v0.6.0:

outpost # Start the server

v0.6.0 and later:

outpost serve    # Start the server
outpost migrate  # Run migrations
outpost --version
  • Docker service users (e.g., docker-compose up) - No changes required. The container
    still starts the server by default.
  • Docker CLI users (e.g., docker run hookdeck/outpost ...) - The entrypoint is now the
    unified CLI, so commands change as shown above.
  • Binary users - Update scripts/commands to use outpost serve instead of outpost.
    • NOTE: The outpost CLI orchestrates outpost-server and
      outpost-migrate-redis binaries. All three binaries must be in the same directory or
      available in your $PATH for the CLI to function correctly.

Migration Steps

Option 1: Using environment variables

docker run --rm \\
  -e REDIS_HOST=your-host \\
  -e REDIS_PASSWORD=your-password \\
  hookdeck/outpost:v0.6.0 migrate plan

Option 2: Using CLI flags

docker run --rm hookdeck/outpost:v0.6.0 migrate plan \\
  --redis-host=your-host \\
  --redis-password=your-password

Option 3: Using .env file

docker run --rm --env-file .env hookdeck/outpost:v0.6.0 migrate plan

Then proceed with apply, verify, deploy, and cleanup:

docker run --rm -it hookdeck/outpost:v0.6.0 migrate apply [options]
docker run --rm hookdeck/outpost:v0.6.0 migrate verify [options]
# Deploy v0.6.0 and test thoroughly
docker run --rm -it hookdeck/outpost:v0.6.0 migrate cleanup [options]

📖 Full guide: Outpost Migration Guide

X-Outpost-Timestamp header and metadata timestamps now use Unix seconds

All timestamps now consistently use Unix seconds to align with the signature format. Applications parsing these timestamps will need to update their logic to expect seconds instead of milliseconds.

Features

  • Core: Add Redis Cluster support with TLS and automatic node discovery (#465) by @leggetter
  • Core: Add unified Outpost CLI with migration tool (outpost migrate) (#498) by @alexluong

Fixes

  • Portal: Fix inline SVG icons inflating table row height (#501) by @leggetter

Full Changelog

Compare v0.5.1...v0.6.0