You can edit a Google Cloud Managed Service for Apache Kafka cluster to update properties like the number of vCPUs, memory, subnets, encryption type, or labels. You can also trigger an auto-rebalance.
To edit a cluster you can use the Google Cloud console, the Google Cloud CLI, the client library, or the Managed Kafka API. You can't use the open source Apache Kafka API to update a cluster.
Before you begin
Review the properties of the cluster before making any changes.
Required roles and permissions to edit a cluster
To get the permissions that you need to update a cluster,
ask your administrator to grant you the
Managed Kafka Cluster Editor (roles/managedkafka.clusterEditor
) IAM role on your project.
For more information about granting roles, see Manage access to projects, folders, and organizations.
This predefined role contains the permissions required to update a cluster. To see the exact permissions that are required, expand the Required permissions section:
Required permissions
The following permissions are required to update a cluster:
-
Edit a cluster:
managedkafka.clusters.update
You might also be able to get these permissions with custom roles or other predefined roles.
The Managed Kafka Cluster Editor role does not let you create, delete, or modify topics and consumer groups on Managed Service for Apache Kafka clusters. Nor does it allow data plane access to publish or consume messages within clusters. For more information about this role, see Managed Service for Apache Kafka predefined roles.
Editable properties of a cluster
Not all properties can be edited in the Google Cloud console. Use the gcloud CLI, or the client libraries to edit properties not available in the Google Cloud console.
Edit a cluster
Before you edit a cluster, review the editable properties of a cluster. Updating certain properties, such as CPU and memory, might require a cluster restart. When required, clusters are restarted one broker at a time. This leads to temporary failures of requests to individual brokers. These failures are transient. Commonly used client libraries handle such errors automatically.
To edit a cluster, follow these steps:
Console
-
In the Google Cloud console, go to the Cluster page.
- From the list of clusters, click the cluster whose properties you want to edit.
The cluster details page is displayed.
- In the cluster details page, click Edit.
- Edit the properties as required. The following properties of a cluster are editable from the console:
- Memory
- vCPUs
- Subnet
- Labels
You cannot edit the cluster name, the cluster location, or the encryption type.
- Click Save.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Run the
gcloud managed-kafka clusters update
command:gcloud managed-kafka clusters update CLUSTER_ID \ --location=LOCATION \ --cpu=CPU \ --memory=MEMORY \ --subnets=SUBNETS \ --auto-rebalance \ --labels=LABELS
Replace the following:
-
CLUSTER_ID: The ID or name of the cluster. You can't update this value.
-
LOCATION: The location of the cluster. You can't update this value.
-
CPU: The number of virtual CPUs for the cluster.
-
MEMORY: The amount of memory for the cluster. Use "MB", "MiB", "GB", "GiB", "TB", or "TiB" units. For example, "10GiB".
-
SUBNETS: The list of subnets to connect to. Use commas to separate multiple subnet values.
-
auto-rebalance
: Enables automatic rebalancing of topic partitions among brokers when the number of CPUs in the cluster changes. This is enabled by default. -
LABELS: Labels to associate with the cluster.
-
If you use the --async
flag with your command, the system
sends the update request and immediately returns a response,
without waiting for the operation to complete. With the --async
flag, you can continue with other tasks while the cluster update
happens in the background. If you don't use the --async
flag,
the system waits for the operation to complete before
returning a response. You have to wait until the cluster is
fully updated before you can continue with other tasks.