Control Plane in Shared VPC (GCP)
This document provides a step-by-step guide to setting up and launching the Facets Control Plane in a GCP Shared VPC.
1. Pre-requisites
Before launching the Facets Control Plane, ensure the following GCP setup is complete:
Note: To learn how to create a shared VPC check this doc.
A. Organizational Setup
- A GCP organizational account is required.
- A Host Project with the following IAM roles:
Compute Network Admin
Compute Network User
Organization Administrator
Owner - Additional permissions:
compute.organizations.disableXpnHostcompute.organizations.disableXpnResourcecompute.organizations.enableXpnHostcompute.organizations.enableXpnResourcecompute.projects.getresourcemanager.projects.getresourcemanager.projects.getIamPolicyresourcemanager.projects.list
B. Networking Setup in the Host Project
- A VPC must be created in the host project, acting as the shared network for all attached service projects.
- Create at least two or three subnets with
/16CIDR ranges. - Add secondary CIDR ranges (
/16each) for:- GKE pods
- GKE services
- Reserve a subnet for Internal Load Balancers (ILBs) for Facets components.
- Enable Cloud NAT to allow outbound connections without exposing node IPs.
- Enable Private Google Access for GKE clusters to securely access Google services.
- Allocate a Private Service Access range (important if using managed services like AlloyDB).
- Establish a Private GCP Connection for secure access to Google services.`
2. Configuring the Shared VPC
Attach Service Projects: Ensure that service projects are properly attached to the shared VPC with Kubernetes access enabled. This allows the service projects to utilize network resources from the host project.
Permissions:
Project-Level Permissions:
Assign the role of Compute Security Admin to service-\<SERVICE_PROJECT_NUMBER>@container-engine-robot.iam.gserviceaccount.com.
Assign the role of Kubernetes Engine Host Service Agent User to the same service account.
Subnet-Level Permissions:
Assign the role of Compute Network User to the following service accounts:
\<SERVICE_PROJECT_NUMBER>[[email protected]](mailto:[email protected])\<SERVICE_PROJECT_NUMBER>@cloudservices.gserviceaccount.comservice-\<SERVICE_PROJECT_NUMBER>@container-engine-robot.iam.gserviceaccount.com
3. Configuring Facets Service Account
Create Facets Service Account:
Within the service project, create a service account designated for Facets. This account will manage interactions and operations specific to the Facets application within the shared VPC.
Assign Custom Role in Host Project:
Create a custom role in the host project with the following permissions:
compute.firewalls.createcompute.firewalls.updatecompute.firewalls.deletecompute.firewalls.getcompute.globalOperations.getcompute.networks.updatePolicycompute.subnetworks.get
Attach this custom role to the Facets service account created in the service project. This step is crucial for providing the necessary permissions for network management and configuration.
Updated 5 months ago