You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -7,37 +7,85 @@ This document provides step-by-step instructions for deploying Cube Cloud BYOC o
7
7
## Prerequisites
8
8
9
9
The bulk of provisioning work will be done remotely by Cube Cloud automation.
10
-
However, to get started, you'll need to provide Cube with the necessary access
11
-
along with some additional information that includes:
10
+
However, to get started, you'll need:
11
+
12
+
### Required Information
12
13
13
14
-**GCP Project ID:** A dedicated GCP project ID that will exclusively host Cube-managed infrastructure.
14
15
This should be a new, isolated project created specifically for Cube Cloud BYOC.
15
16
-**GCP Region:**[The GCP region][gcp-docs-regions] where Cube Cloud resources
16
17
should be deployed.
17
18
18
-
In addition to that, you'll need to make sure you have sufficient access to grant
19
-
IAM permissions in the dedicated project to allow Cube Cloud to:
20
-
- Create and manage VPC networking
21
-
- Create and manage GKE clusters
22
-
-Create and manage Cloud Storage buckets
23
-
-Create and manage Cloud DNS zones
24
-
-Create and manage service accounts
25
-
- Configure IAM permissions for resources
26
-
- Read from Artifact Registry
19
+
### Required Permissions
20
+
21
+
You'll need to have the following permissions in your GCP organization/folder to complete the setup:
22
+
23
+
-**Project Creator** (`roles/resourcemanager.projectCreator`) - To create a new dedicated project
24
+
-**Project IAM Admin** (`roles/resourcemanager.projectIamAdmin`) - To grant permissions in the project
25
+
-**Billing Account User** (`roles/billing.user`) - To link billing to the new project
26
+
27
+
If you don't have these permissions, contact your GCP organization administrator.
27
28
28
29
## Provisioning access
29
30
30
-
### Create a dedicated GCP project
31
+
### Step 1: Create a dedicated GCP project
31
32
32
33
We strongly recommend creating a dedicated GCP project that will exclusively host
33
34
Cube-managed infrastructure. This project isolation approach simplifies permission
34
35
management and provides clear resource boundaries.
35
36
36
-
Navigate to the [GCP Console][gcp-console] and create a new project for Cube Cloud BYOC.
37
-
Note the **Project ID** (not the project name) as you'll need it for the next steps
38
-
and to share with your Cube contact point.
37
+
1. Navigate to the [GCP Console][gcp-console]
38
+
2. Click **Create Project**
39
+
3. Enter a project name (e.g., "cube-cloud-byoc")
40
+
4. Note the **Project ID** (not the project name) - you'll need this for subsequent steps
41
+
5. Select your billing account
42
+
6. Click **Create**
43
+
44
+
<InfoBox>
45
+
Make sure billing is enabled for the project. You can verify this by navigating to
46
+
**Billing** in the GCP Console and confirming the project is linked to an active billing account.
47
+
</InfoBox>
48
+
49
+
### Step 2: Enable required APIs
50
+
51
+
Before granting permissions, enable the necessary GCP APIs in your dedicated project.
52
+
This ensures that subsequent API calls will work correctly.
53
+
54
+
**Required APIs:**
55
+
56
+
-**Compute Engine API** (`compute.googleapis.com`) - For VPC networks and compute resources
57
+
-**Kubernetes Engine API** (`container.googleapis.com`) - For GKE clusters
58
+
-**Cloud Storage API** (`storage.googleapis.com`) - For Cube Store buckets
59
+
-**IAM API** (`iam.googleapis.com`) - For service account management
60
+
-**Cloud Resource Manager API** (`cloudresourcemanager.googleapis.com`) - For project IAM operations
61
+
-**Service Networking API** (`servicenetworking.googleapis.com`) - For private service connectivity
62
+
63
+
<InfoBox>
64
+
65
+
**Note:** DNS and Artifact Registry APIs are not required in your project. Cube manages DNS in its own project,
66
+
and container images are pulled from Cube's Artifact Registry using Cube-provided credentials.
67
+
68
+
</InfoBox>
69
+
70
+
You can enable these APIs through the [API Library][gcp-api-library] in the GCP Console,
71
+
or use the `gcloud` command:
72
+
73
+
```bash
74
+
# Set your project ID
75
+
export PROJECT_ID="your-cube-byoc-project-id"
76
+
77
+
# Enable all required APIs
78
+
gcloud services enable \
79
+
compute.googleapis.com \
80
+
container.googleapis.com \
81
+
storage.googleapis.com \
82
+
iam.googleapis.com \
83
+
cloudresourcemanager.googleapis.com \
84
+
servicenetworking.googleapis.com \
85
+
--project=$PROJECT_ID
86
+
```
39
87
40
-
### Grant IAM permissions
88
+
### Step 3: Grant IAM permissions
41
89
42
90
In order to manage resources in the Cube-dedicated GCP project, Cube Cloud Service Principal
43
91
needs to be granted administrative permissions to a set of services.
@@ -53,16 +101,17 @@ binding for the Cube Cloud service account:
53
101
-**Kubernetes Engine Admin** (`roles/container.admin`) - Allows creation and management of GKE clusters and node pools
54
102
-**Storage Admin** (`roles/storage.admin`) - Allows creation and management of Cloud Storage buckets for Cube Store
55
103
-**Service Account Admin** (`roles/iam.serviceAccountAdmin`) - Allows creation and management of service accounts for cluster nodes and workload identity
104
+
-**Service Account Key Admin** (`roles/iam.serviceAccountKeyAdmin`) - Allows creation and management of service account keys for Cube Store authentication
56
105
-**Project IAM Admin** (`roles/resourcemanager.projectIamAdmin`) - Allows granting IAM permissions to created resources (e.g., bucket access for service accounts)
57
106
58
107
You can grant these permissions through the Google Cloud Console UI or using the
59
108
`gcloud` command-line tool:
60
109
61
110
```bash
62
-
# Set your project ID
111
+
# Set your project ID (replace with your actual project ID)
63
112
export PROJECT_ID="your-cube-byoc-project-id"
64
113
65
-
# Set the Cube Cloud service account
114
+
# Set the Cube Cloud service account (use this exact value)
0 commit comments