Skip to content

v0.7.3

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Aug 02:45
1c981dd

What's new in v0.7

  • Node-local storage pools. A GarageCluster can now manage selector-driven HostPath pools as DaemonSets, with one durable Garage identity per Kubernetes Node. Pools can coexist with the existing PVC group, manually managed SMB/Ceph/PVC or external members, and gateways. Activation fences, HostPath ownership markers, serialized rollouts, and drain/layout proofs are built in. See the node-local pool guide.
  • Drain retries that keep their work. Temporary federated Admin API read failures now pause a storage drain without discarding exact block-repair worker IDs or launching duplicate full scans. Quiet and completion timers are cleared, while a real process UID change or missing worker still restarts the proof.
  • Reliable node-local convergence. Healthy clusters no longer report Failed when periodic controllers briefly contend for the serialized Garage layout lock while revalidating an active pool. A membership change still waiting for the lock reports WaitingForLayoutSync and retries automatically.
  • Node-derived failure domains. spec.zoneFrom.nodeLabel can derive each storage member's Garage zone from its Kubernetes Node.
  • Safer lifecycle operations. Layout updates now verify Garage's readback, layout rebuilds use an exact Pod credential, and drain, cycle, and externally managed cluster paths have stronger coverage.
  • Targeted block retries. Cluster-wide retries of specific block-resync errors now inventory which nodes report each hash and send exact requests only to those nodes. Already-cleared hashes are an idempotent no-op, while an incomplete inventory fails closed.
  • Verifiable release artifacts. The operator image and OCI Helm chart are keylessly signed and include build provenance. The image also includes an SPDX SBOM attestation, and install.yaml includes provenance.

Before upgrading

  • Existing clusters are unchanged unless spec.storage.nodeLocalPools is explicitly declared. This release does not automatically migrate storage.
  • Node-local pools require Kubernetes 1.27+, Garage v2.0+, a v1beta2 GarageCluster, enabled validating and conversion webhooks, a cluster-scoped operator installation, Node access, an Admin token, and pre-created production HostPaths with .garage-volume-id markers. Garage v2.3.0 is the tested default. Existing non-pool configurations retain the Kubernetes 1.25+ minimum.
  • If custom env or envFrom entries set Garage configuration or credential variables, follow the reserved environment variable migration before upgrading.

Thanks to @florissmit10 for the original DaemonSet prototype and use case that the node-local pool design builds on.

Full changelog: v0.6.29...v0.7.3