Skip to main content

Garage

Garage logo

S3-compatible object storage for the apps on your node.

Category: Databases

Garage, from Deuxfleurs, is an open-source object store. It speaks the Amazon S3 API, so any application that already uses an S3 SDK, the AWS CLI, or rclone can keep files in it. EmberNet packages Garage 2.4.1 with Garage's official Helm chart and adds the setup that chart leaves to you.

What it does​

  • Stores objects in buckets over the S3 API.
  • Builds its own cluster layout after every install and upgrade. A setup job connects the nodes, applies the storage layout, creates the buckets you declare, and issues the access keys you declare.
  • Hands each access key to your apps in a Secret named <release>-garage-key-<name>, holding the credentials, the endpoint, the region, and the bucket, under the variable names S3 clients already read.
  • Keeps its generated secrets the same across upgrades.

When to use it​

Use Garage when an application on the node needs somewhere to put files, such as media, exports, or backups from another app, and it can talk S3. With one node it is a simple store for an edge site or a lab. With three nodes it keeps three copies of every object and keeps serving reads and writes when one node fails.

Running on EmberNet​

  • One instance per node. The App Store installs one Garage per node, each into your tenant's namespace.
  • Single node or three. The default is one node with one copy of each object. For three copies, set the node count and replication factor to 3 before you install. The replication factor cannot be changed on a running cluster, so choose first.
  • Buckets and keys come from your values. Declare them in the YAML values before you deploy, and the setup job creates them. It never deletes a bucket or a key, including ones you later remove from the list.
  • Your data survives restarts. Each node gets a 2 Gi metadata volume and a 20 Gi data volume by default.
  • Use path-style addressing. Set your client to path-style requests and to sign for the region in the Secret, garage by default.
  • No web page. Garage has no interface of its own, so its card has nothing to open. Your apps reach it inside the cluster over plain HTTP.
  • Sized small by default. One node requests 100m of CPU and 512 MiB of memory.
  • Locked down. Every container runs as a non-root user with every capability dropped and a read-only root filesystem.
  • Open to the cluster by default. The chart's optional network policy is off, so every app on the cluster can reach Garage. Turn it on to limit S3 access to the namespaces you name.
Plan your backups

Replication protects against losing a node. It does not protect against a client deleting or overwriting an object, because Garage replicates that change too, and Garage keeps no object versions. Copy important buckets to a second store on a schedule.

Learn more​

EmberNet packages and deploys this application; Garage is developed by Deuxfleurs. Product names and logos are trademarks of their respective owners.