This page describes how to setup Bytebase in production environment. System Requirements

Enable HTTPS and WebSocket

You can use Caddy or Nginx. Check out the configuration example.

Configure External URL

See Configure External URL.

Store metadata in External PostgreSQL

See Configure External PostgreSQL.

Telemetry

Access telemetry at /metrics (e.g. https://demo.bytebase.com/metrics).

High Availability (HA)

You can only run a single Bytebase instance at a time. In other words, you can scale up the instance but cannot scale it out to multiple replicas. Restarting the Bytebase instance usually takes under 10 seconds. To minimize the downtime, you should store the metadata in an external PostgreSQL and make sure the PostgreSQL instance is highly available.

Kubernetes

Set replicas: 1

Make sure to set the replicas to 1, otherwise, it may cause data race issues.

Use Persistent Volume

If Bytebase is configured to store either metadata or the backups on the local disk, then you must use Persistent Volume. Local disk cannot persist state and can also cause frequent pod eviction due to disk pressure during backup.
Status: Failed
Reason: Evicted
Message: Pod The node had condition: [DiskPressure].

Cloud vendor stack

If you self-host Bytebase in the cloud provider, below is the recommended stack.

AWS

GCP

  • GCE + Cloud SQL for PostgreSQL.
  • GKE + Cloud SQL for PostgreSQL.