Storage
Backblaze B2
Backblaze B2 as object storage, through its S3-compatible API.
Relic is not tested against B2, so test an upload and a download before production.
Create the buckets
In the B2 web console, create two private buckets, such as
example-relic-artifacts and example-relic-temporary. Note the
Endpoint, such as s3.us-west-004.backblazeb2.com; the part between s3.
and .backblazeb2.com is the region.
Lifecycle settings
B2 keeps every version of a file, and an S3 delete only hides it. Set these under Lifecycle Settings, or garbage collection frees no space:
| Bucket | Setting |
|---|---|
| artifacts | Keep only the last version of the file. |
| temporary | A custom rule for all files: hide 1 day after upload, delete 1 day after hiding. |
Application key
Under Application Keys, add a key with Read and Write access to both buckets; a key restricted to one bucket makes every upload fail. Its keyID and applicationKey, shown once, are Relic's key pair.
Settings
RELIC_OBJECT_STORAGE_ENDPOINT=https://s3.us-west-004.backblazeb2.com
RELIC_OBJECT_STORAGE_REGION=us-west-004
RELIC_OBJECT_STORAGE_ARTIFACTS_BUCKET=example-relic-artifacts
RELIC_OBJECT_STORAGE_TEMPORARY_BUCKET=example-relic-temporary
RELIC_OBJECT_STORAGE_ACCESS_KEY=<keyID>
RELIC_OBJECT_STORAGE_SECRET_KEY=<applicationKey>
Helm:
seaweedfs:
enabled: false
existingCredentialsSecret: relic # holds the S3 key pair, adminPassword and encryptionKey
objectStorage:
endpoint: https://s3.us-west-004.backblazeb2.com
region: us-west-004
artifactsBucket: example-relic-artifacts
temporaryBucket: example-relic-temporary
Gotchas
- Checksums. If B2 rejects the SDK's checksums, set
RELIC_OBJECT_STORAGE_CHECKSUMtowhen_required(objectStorage.checksumin the Helm chart). - Downloads cost transactions. Each download and
HEADis a B2 API call. The Helm chart's readiness probe adds oneHEADevery 10 seconds per server pod, and the daily storage check lists the artifacts bucket and reads up to 10 GiB.