With Bring Your Own Cloud (BYOC) on Google Cloud Platform (GCP), all the components interacting with private data are deployed on the customer infrastructure on GCP and managed by the Cube Control Plane via the Cube Operator. This document provides step-by-step instructions for deploying Cube BYOC on GCP.Documentation Index
Fetch the complete documentation index at: https://docs.cube.dev/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
The bulk of provisioning work will be done remotely by Cube automation. However, to get started, you’ll need:Required Information
- GCP Project ID: A dedicated GCP project ID that will exclusively host Cube-managed infrastructure. This should be a new, isolated project created specifically for Cube BYOC.
- GCP Region: The GCP region where the BYOC resources should be deployed.
Required Permissions
You’ll need to have the following permissions in your GCP organization/folder to complete the setup:- Project Creator (
roles/resourcemanager.projectCreator) - To create a new dedicated project - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - To grant permissions in the project - Billing Account User (
roles/billing.user) - To link billing to the new project
Provisioning access
Step 1: Create a dedicated GCP project
We strongly recommend creating a dedicated GCP project that will exclusively host Cube-managed infrastructure. This project isolation approach simplifies permission management and provides clear resource boundaries.- Navigate to the GCP Console
- Click Create Project
- Enter a project name (e.g., “cube-cloud-byoc”)
- Note the Project ID (not the project name) - you’ll need this for subsequent steps
- Select your billing account
- Click Create
Make sure billing is enabled for the project. You can verify this by navigating to
Billing in the GCP Console and confirming the project is linked to an active billing account.
Step 2: Enable required APIs
Before granting permissions, enable the necessary GCP APIs in your dedicated project. This ensures that subsequent API calls will work correctly. Required APIs:- Compute Engine API (
compute.googleapis.com) - For VPC networks and compute resources - Kubernetes Engine API (
container.googleapis.com) - For GKE clusters - Cloud Storage API (
storage.googleapis.com) - For Cube Store buckets - IAM API (
iam.googleapis.com) - For service account management - Cloud Resource Manager API (
cloudresourcemanager.googleapis.com) - For project IAM operations - Service Networking API (
servicenetworking.googleapis.com) - For private service connectivity
Note: DNS and Artifact Registry APIs are not required in your project. Cube manages DNS in its own project,
and container images are pulled from Cube’s Artifact Registry using Cube-provided credentials.
gcloud command:
Step 3: Grant IAM permissions
In order to manage resources in the Cube-dedicated GCP project, the Cube service principal needs to be granted administrative permissions to a set of services. Navigate to IAM & Admin > IAM in your dedicated project and add the following IAM binding for the Cube service account: Principal:cube-cloud-byoc-installer@cube-cloud-byoc.iam.gserviceaccount.com
Roles:
- Compute Admin (
roles/compute.admin) - Allows creation and management of VPC networks, subnets, routers, NAT gateways, firewall rules, IP addresses, and Private Service Connect endpoints - Kubernetes Engine Admin (
roles/container.admin) - Allows creation and management of GKE clusters and node pools - Storage Admin (
roles/storage.admin) - Allows creation and management of Cloud Storage buckets for Cube Store - Service Account Admin (
roles/iam.serviceAccountAdmin) - Allows creation and management of service accounts for cluster nodes and workload identity - Service Account Key Admin (
roles/iam.serviceAccountKeyAdmin) - Allows creation and management of service account keys for Cube Store authentication - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Allows granting IAM permissions to created resources (e.g., bucket access for service accounts)
gcloud command-line tool:
Step 4: Grant Service Account User permissions
Additionally, the Cube service account needs permission to use the default Compute Engine service account for GKE node pools.Make sure you have the
PROJECT_ID and CUBE_SA environment variables set from Step 3 before running these commands.Step 5: Verify setup
Before notifying Cube, verify that all permissions and APIs are correctly configured:Deployment
The actual deployment will be done by Cube automation. All that’s left to do is notify your Cube contact point that access has been granted, and pass along your GCP Project ID and Region information. After deployment, Cube will manage the following resources in your dedicated project:- A VPC network with subnets, Cloud Router, and Cloud NAT for outbound connectivity
- A GKE cluster with node pools for running Cube applications
- Cloud Storage buckets for Cube Store data
- Service accounts and IAM bindings for secure resource access
- Firewall rules and network policies for security