Skip to main content
Deploy Bifrost on Kubernetes using Terraform. This guide breaks down the deployment into individual components for better understanding.
Bifrost also provides a ready-to-use Terraform module that handles all the infrastructure setup for you. You can use it directly from GitHub:
See the Terraform module README for full documentation and examples.
If you are using Postgres/MySQL for config and log store, you can skip the Volume configuration and permission changes sections.
If you use PostgreSQL for config_store or logs_store, ensure the target database is UTF8 encoded. See PostgreSQL UTF8 Requirement.

1. Volume Configuration

Create an EBS volume, persistent volume, and persistent volume claim for Bifrost data storage.

2. Configuration Secret

Create a Kubernetes secret to store Bifrost configuration with Postgres backend.
This configuration uses Postgres for both config store and logs store. The secret is mounted as a file at /app/data/config.json in the container.

3. Deployment Configuration

Create the Bifrost deployment with proper security contexts and volume mounts.
Volume Permissions: The deployment includes an init container that sets proper ownership (1000:1000) and permissions (755) on the mounted volume. This ensures the Bifrost container can read/write to the volume.
  • fs_group: 1000 sets the volume’s group ownership
  • run_as_user: 1000 runs the container as non-root user
  • Init container runs as root to fix permissions before the main container starts

4. Service Configuration

Create a Kubernetes service to expose the Bifrost deployment.

Complete Configuration

Here’s the complete Terraform configuration combining all components: