This guide outlines the services that RisingWave deploys in a BYOC environment and walks you through the process of enabling BYOC in a step-by-step manner.
Use this file to discover all available pages before exploring further.
The Bring Your Own Cloud (BYOC) plan offers you the flexibility to tailor your cloud infrastructure instead of depending on a hosted service. It allows you to utilize the advantages of your chosen cloud provider, maintain full control over your environment, and adjust configurations to suit your specific needs.
Before creating a BYOC deployment, familiarize yourself with the following architecture. In the BYOC environment, the entire data plane is deployed in the user’s space. To manage the RisingWave clusters within this environment, we deploy two key services for operation delegation:
Agent Service: This service manages Kubernetes (K8s) and cloud resources. It handles tasks such as managing RisingWave Pods, storage services (including AWS S3, GCS, and Azure Blob Storage), IAM roles/accounts associated with the RisingWave cluster, network endpoints, etc.
RWProxy: This is a TCP proxy that routes SQL statements from the control plane to the appropriate RisingWave instances. Control plane will issue SQL queries to retrieve cluster metadata and health status.
BYOC uses the rwc (RisingWave Cloud CLI) to provision and manage environments. Before continuing, install and authenticate the CLI by following Install the RisingWave Cloud CLI.Once rwc cluster list runs successfully in your chosen region, you are ready to create a BYOC environment.
Follow the steps below to create your own cloud environment.
Navigate to the Projects page and click Create project.
Select a deployment mode. Choose BYOC.
Select a service provider. Choose your cloud platform (AWS, GCP, or Azure) and your preferred region. See Resource and permission for more details.
If you’re using AWS, ensure you’re not using the AWS account root user for any deployment or operational tasks. Always use IAM users or roles with appropriate permissions instead.
If you’re using AWS with AWS Firewall Manager (FMS) security group policies enabled, please contact our support team before creating a BYOC environment. FMS automatically attaches managed security groups to EC2 instances, which requires additional configuration to prevent node stability issues.
Prepare the BYOC environment section. Click Setup now and follow the steps to set up your BYOC environment. Please note that the final command rwc byoc apply --name xxx may take 30 to 40 minutes to complete, and a progress bar will keep you informed of its progress. During this time, it’s crucial to ensure a stable internet connection. If the command is interrupted or fails due to network instability, you can safely retry it.
When you run the command rwc byoc apply --name xxx, it will deploy some resources in your AWS/GCP/Azure environment, such as AWS S3/Google Cloud Storage/Azure Blob Storage and EKS/GKE/AKS clusters. Please do not modify the configuration of these resources. If you encounter any issues during this process, please contact our support team.
Select compute size in RWU. For most users, standard sizes offer the best performance and cost balance. Choose Custom if the standard sizes don’t meet your workload requirements. To learn more about the nodes, see the architecture of RisingWave.
Click Summary, then Confirm, and run the command that appears to set up a BYOC cluster in your environment.
Once the cluster is successfully created, you can manage it through the portal just like hosted clusters.
RisingWave provides several custom settings for BYOC deployments. To enable this feature, you need to create a configuration file containing the custom settings. These settings can be applied when creating a new BYOC environment or updating an existing one.Below are all supported custom settings:
You may either create a new BYOC environment or update your existing one to apply the custom settings.
Create a new BYOC environment
Update an existing BYOC environment
Run the following command to create a new BYOC environment with custom settings. $BYOC_CONFIG is the file path of the config file created in the previous step.
When you customize your cloud platform, refer to the following notes to see what we’ve set up for you and the permissions you need to enable.
AWS
GCP
Azure
Required service-linked roleThe role AWSServiceRoleForAutoScaling needs to be in place. If it is not ready yet, you need to create it manually. See Create a service-linked role for detailed steps.
Required quota increaseFor optimal performance, the quota for managed node groups per cluster should be increased to 36 or more. See Service quotas for more details.
Required permissions for BYOC environment creation/deletionThe IAM role/user requires the following roles to create or delete a BYOC environment:
AmazonDynamoDBFullAccess
AmazonEC2FullAccess
AmazonElasticContainerRegistryPublicReadOnly
AmazonPrometheusFullAccess
AmazonS3FullAccess
AmazonVPCFullAccess
AWSKeyManagementServicePowerUser
CloudWatchLogsFullAccess
IAMFullAccess
Additionally, attach a policy that includes the following permissions:
Required APIs for BYOC environment creation/deletionYou need to enable the following APIs to create or delete a BYOC environment:
Compute Engine API for VPC resources provision.
Cloud DNS API for VPC private service connect setup.
Kubernetes Engine API for provisioning the GKE cluster the data plane is hosted.
Cloud Resource Manager API for IAM provisioning.
Service Networking API for Cloud SQL (as meta store) connection.
Cloud SQL Admin API for Cloud SQL (as meta store) provisioning.
Required permission for BYOC environment creation/deletionBefore running the command-line interface to create or delete a BYOC environment, you need to have a Google IAM (IAM user/Service account) with the following roles.
These permissions are only required for creating or deleting a BYOC environment. Once the environment is up and running, limited permissions are needed to operate the services.
Resources provisioned in BYOC environmentWe will set up the following resources in a BYOC environment:
1 VPC: including VPC, its subnets, firewalls, IPs to host all BYOC resources.
1 GKE cluster: to host all service and RisingWave clusters workloads.
2 GCS buckets: for RisingWave cluster data and infra state data respectively.
2 Internal network load balancer: to expose Agent Service and RWProxy.
(Optional) 1 External network load balancer: to expose RWProxy to the Internet.
A few service accounts for GKE and K8s workloads, and each role is granted the least privilege it requires.
Required permission for deployed servicesWe will provision a Google Service Account for the deployed services. The services require the following permissions:
Service Account Admin for managing the IAM service account RisingWave clusters runs as and infra management.
Required feature flagsFeature flag EnableAPIServerVnetIntegrationPreview must be enabled for the subscription to deploy a BYOC environment, see Instruction for more details.The following providers must be registered in the subscription, see Prerequisites for more details.
Microsoft.ContainerService
Microsoft.Insights
Microsoft.AlertsManagement
Microsoft.Monitor
Required permission for BYOC environment creation/deletionWe recommend utilizing a service principal or user with owner permissions of the Azure subscription to provision the infrastructure.Additionally, the service principal or user should be granted the following Azure AD API permissions.For service principal authentication (one of the following combinations):
AppRoleAssignment.ReadWrite.All and Application.Read.All
AppRoleAssignment.ReadWrite.All and Directory.Read.All
Application.ReadWrite.All
Directory.ReadWrite.All
For user principal authentication:
Global Administrator
Resources provisioned in BYOC environmentWe will set up the following resources in a BYOC environment:
1 VPC: including VPC, its subnets, firewalls, IPs to host all BYOC resources.
1 AKS cluster: to host all service and RisingWave clusters workloads.
2 Azure storage accounts each with one blob container in it: for RisingWave cluster data and infra state data respectively.
2 Internal network load balancer: to expose Agent Service and RWProxy.
(Optional) 1 External network load balancer: to expose RWProxy to the Internet.
A few user-assigned identities for AKS workloads, and each identity is granted the least privilege it requires.
Follow the steps below to delete a BYOC environment deployed in your cloud.
Delete all BYOC projects running in the environment. Navigate to the Projects page, click the delete icon to delete all of your BYOC projects.
Delete resources you created that are not managed by RisingWave, such as VPC Peerings, GCP Firewalls, and other common resources you might have used.
Open the terminal and execute the following commands:
$ rwc byoc terminate --name default-byoc-environment # This may take 2-3 minutes.$ rwc byoc delete --name default-byoc-environment # This may take 30-40 minutes.