Skip to main content
General

BYOC quickstart

Instructions for deploying Rivet BYOC.

Rivet manages deployments in your cloud The Rivet operator pulls commands from Rivet Cloud over an outbound connection. Inside your VPC and Kubernetes cluster, the Rivet operator updates and maintains the Rivet control plane and FoundationDB. A caption beneath the grouped components identifies them as fully managed by Rivet. YOUR VPC KUBERNETES Rivet Cloud Pull commands Rivet operator Updates & maintenance Rivet control plane FoundationDB Fully managed by Rivet

Prerequisites

Steps

Create a BYOC project

Go to the Rivet dashboard, click Create Project, and select BYOC.

Download setup kit and cluster config

On your project’s BYOC page, click Download kit and Download config.

Extract the setup kit and place the non-secret rivet.auto.tfvars.json beside terraform.tfvars.json:

AWS

<extracted-bundle>/
└── terraform/
    └── aws/
        ├── main.tf
        ├── terraform.tfvars.json
        └── rivet.auto.tfvars.json

Google Cloud

<extracted-bundle>/
└── terraform/
    └── gcp/
        ├── main.tf
        ├── terraform.tfvars.json
        └── rivet.auto.tfvars.json

Configure Terraform

Update these common settings in terraform.tfvars.json:

  • Cloud account (aws_account_id or gcp_project_id): Your AWS account ID, such as "123456789012", or Google Cloud project ID, such as "my-gcp-project".
  • Deployment name (name): A name such as "rivet-prod" (used for cloud resource names and internal DNS).
  • Regions (regions): The cloud regions to deploy in, such as {"us-east-1": {"region": "us-east-1"}} for AWS or {"us-central1": {"region": "us-central1"}} for Google Cloud.
  • Kubernetes namespaces (kubernetes_namespace, kubernetes_operator_namespace): Namespaces for the Rivet control plane and operator. Default to rivet and rivet-operator; they must differ.
  • Endpoint access (rivet_endpoint_access): Choose private for private HTTP or public for public HTTPS plus private HTTP.
  • Public hostname (rivet_hostname): A hostname such as "rivet.mycompany.com" for public access; omit for private access.

See Configuration for more settings.

AWS

{
  "aws_account_id": "123456789012",
  "name": "rivet-prod",
  "regions": {
    "us-east-1": { "region": "us-east-1" }
  },
  "rivet_endpoint_access": "private"
}

Google Cloud

{
  "gcp_project_id": "my-gcp-project",
  "name": "rivet-prod",
  "regions": {
    "us-central1": { "region": "us-central1" }
  },
  "rivet_endpoint_access": "private"
}

Provision your infrastructure

Click Copy token on the dashboard and set it in your terminal (first apply only):

export RIVET_BYOC_OPERATOR_TOKEN='<your operator token>'

From the Terraform directory, run the following commands. Review the plan before approving it.

terraform init

terraform apply

This will provision:

  • A Kubernetes cluster
  • Networking and load balancers
  • S3-compatible object storage
  • A container image registry
  • Secrets and access permissions
  • The Rivet operator

Public AWS deployments: terraform apply waits for DNS validation of your HTTPS certificates. In your DNS provider, create the CNAME records printed in the terminal using the provided names and values. Keep Terraform running while AWS validates your DNS records and issues the certificates. Provisioning then continues automatically. If validation times out, check your DNS records and run terraform apply again, keeping your existing state and resources.

Configure DNS

Skip this step for private-only deployments.

From your Terraform directory, display the deployment outputs:

terraform output -json deployment

Add the records listed under dns_records to your DNS provider. For AWS, only endpoint records remain; for Google Cloud, add all records. Keep validation records for certificate renewal.

HTTPS is configured automatically once validation completes.

AWS

TypeNameValue
CNAMErivet.mycompany.comexample.awsglobalaccelerator.com
CNAMErivet-us-east-1.mycompany.comexample-alb.us-east-1.elb.amazonaws.com
CNAME_token.rivet.mycompany.com_validation.acm-validations.aws
CNAME_token.rivet-us-east-1.mycompany.com_regional-validation.acm-validations.aws

AWS uses a CNAME to Global Accelerator for the base hostname and CNAMEs directly to the regional load balancers for regional hostnames. Use the actual targets from Terraform outputs, not these illustrative values.

Google Cloud

TypeNameValue
Arivet.mycompany.com203.0.113.10
Arivet-us-central1.mycompany.com203.0.113.10
CNAME_acme-challenge.rivet.mycompany.comexample.authorize.certificatemanager.goog
CNAME_acme-challenge.rivet-us-central1.mycompany.comregional-example.authorize.certificatemanager.goog

Google Cloud uses A records pointing to the public load-balancer IP, plus CNAME records for certificate validation.

Request deployment

Request a deployment from Rivet via Slack or email. Find your contact information on your BYOC page under Enterprise Support.

Rivet will notify you when the control plane has been deployed.

Get credentials and view Rivet dashboard

Follow the Credentials & dashboard guide.

Connect a worker

Deploy a worker on: