Bundled vs external Postgres & object store

The bundled datastores are evaluation-only - when and how to graduate to managed ones.

Eddytor can run two datastores for you - Postgres (its metadata) and an object store (Garage, where Delta tables live). Both are bundled for evaluation only - single-replica, no HA, no backups. Fine for a demo, wrong for data you care about: for anything you keep, bring your own managed, backed-up datastores.

The two datastores

Bundled (eval)External (production)
Postgrespostgres.bundled=true (Helm) / the compose postgres serviceManaged Postgres - put the conn string in EDDYTOR_DATABASE_URL
Object storegarage.bundled=true / the compose garage serviceYour S3 / GCS / Azure Blob - register it after install

Postgres holds Eddytor's metadata (users, storage connections, encrypted secrets) - never your table data. Your table data always lives in the object store.

Graduating Postgres

  1. Provision a managed Postgres (RDS, Cloud SQL, Azure Flexible Server, …).
  2. Put its connection string in the secret / .env as EDDYTOR_DATABASE_URL.
  3. TLS is usually required - append ?sslmode=require (managed Postgres rejects or discourages plaintext).
  4. Leave postgres.bundled=false (the default on Helm).

On Kubernetes, leave waitForDb.enabled=false (the default) for an external DB - Install the chart explains why.

Azure adds one more step: allow-list the citext + pgcrypto extensions before first boot - see AKS.

Graduating the object store

Leave garage.bundled=false and register a real bucket after install - see Connect Storage for S3, GCS, and Azure Blob, including keyless options (IRSA on EKS, Workload Identity on GKE, managed identity on AKS).

A note on CSI volumes

Bundled Postgres on a real cloud disk (azuredisk / EBS / GCE PD) can crash-loop at init - prefer managed Postgres, or see the chart gotchas for the capability patch.

On this page