Updating Apache Kafka® cluster settings
After creating a Managed Service for Apache Kafka® cluster, you can:
- Change the cluster name and description
- Change the class and number of broker hosts
- Change the ZooKeeper host class
- Change the KRaft host class
- Change security group and public access settings
- Change additional cluster settings
- Change Apache Kafka® settings
- Move the cluster to another folder
Learn more about other cluster updates:
- Apache Kafka® version upgrade.
- Managing disk space in a Managed Service for Apache Kafka® cluster.
- Migrating Apache Kafka® cluster hosts to a different availability zone.
- Kafka UI for Apache Kafka®.
Changing a cluster name and description
- In the management console
, navigate to the relevant folder. - Go to Managed Service for Kafka.
- In the cluster row, click
and select Edit. - Under Basic parameters, enter a new name and description for the cluster.
- Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the cluster name and description:
-
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
Run this command, specifying the new cluster name and description:
yc managed-kafka cluster update <cluster_name_or_ID> \ --new-name <new_cluster_name> \ --description <new_cluster_description>To find out the cluster name or ID, get the list of clusters in the folder.
Alert
Do not change the cluster name using Terraform. This will delete the existing cluster and create a new one.
To update the cluster description:
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
Edit the
descriptionparameter in the Managed Service for Apache Kafka® cluster description:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { name = "<cluster_name>" description = "<new_cluster_description>" ... } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "name,description", "name": "<cluster_name>", "description": "<new_cluster_description>" }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
name: To change the cluster name.description: To change the cluster description.
-
name: New cluster name. -
description: New cluster description.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "name", "description" ] }, "name": "<cluster_name>", "description": "<new_cluster_description>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
name: To change the cluster name.description: To change the cluster description.
-
name: New cluster name. -
description: New cluster description.
You can get the cluster ID with the list of clusters in the folder.
-
-
Check the server response to make sure your request was successful.
Changing a class and number of broker hosts
You can increase the number of broker hosts if the following conditions are met:
- The cluster uses Apache Kafka® with ZooKeeper. You cannot change the number of broker hosts in Apache Kafka® clusters that use the KRaft protocol.
- The cluster includes at least two broker hosts in different availability zones.
You cannot reduce the number of broker hosts. To comply with cluster high availability conditions, at least three broker hosts are required.
When changing the broker host class:
- A single-broker cluster will be unavailable for a few minutes with topic connections dropped.
- In a multi-broker cluster, each host will be stopped and updated one by one, remaining unavailable for a few minutes.
We recommend changing broker host class only when your cluster has no active workload.
To change the class and number of hosts:
-
In the management console
, navigate to the relevant folder. -
Go to Managed Service for Kafka.
-
In the cluster row, click
and select Edit. -
Change the relevant settings:
- To update the broker host class, select a new Host class.
- Change the Number of brokers in zone.
-
Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the class and number of hosts:
-
Get information about the cluster:
yc managed-kafka cluster list yc managed-kafka cluster get <cluster_name_or_ID> -
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
To increase the number of broker hosts, run this command:
yc managed-kafka cluster update <cluster_name_or_ID> --brokers-count <number> -
To change the broker host class, run this command:
yc managed-kafka cluster update <cluster_name_or_ID> --resource-preset <host_class>
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
In the Managed Service for Apache Kafka® cluster description, edit the
brokers_countparameter value to increase the number of broker hosts:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { config { brokers_count = <number_of_broker_hosts> ... } ... } -
In the Managed Service for Apache Kafka® cluster description, edit the
resource_preset_idparameter value in thekafka.resourcessection to specify a new broker host class:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... kafka { resources { resource_preset_id = "<broker_host_class>" ... } } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Get the list of available host classes:
-
Call the ResourcePreset.list method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/resourcePresets' -
Check the server response to make sure your request was successful.
-
-
Change the class and number of broker hosts as appropriate:
-
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.kafka.resources.resourcePresetId,configSpec.brokersCount", "configSpec": { "kafka": { "resources": { "resourcePresetId": "<broker_host_class_ID>" } }, "brokersCount": "<number_of_broker_hosts>" } }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
configSpec.kafka.resources.resourcePresetId: To change the broker host class.configSpec.brokersCount: To change the number of broker hosts.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Get the list of available host classes:
-
Call the ResourcePresetService/List method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/resource_preset_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ResourcePresetService.List -
Check the server response to make sure your request was successful.
-
-
Change the host class as appropriate:
-
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.kafka.resources.resource_preset_id", "config_spec.brokers_count" ] }, "config_spec": { "kafka": { "resources": { "resource_preset_id": "<broker_host_class_ID>" } }, "brokers_count": { "value": "<number_of_broker_hosts>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
config_spec.kafka.resources.resource_preset_id: To change the broker host class.config_spec.brokers_count: To change the number of broker hosts.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
Changing a ZooKeeper host class
- In the management console
, navigate to the relevant folder. - Go to Managed Service for Kafka.
- In the cluster row, click
and select Edit. - Select a new ZooKeeper host class.
- Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the class of ZooKeeper hosts:
-
Get information about the cluster:
yc managed-kafka cluster list yc managed-kafka cluster get <cluster_name_or_ID> -
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
To change the ZooKeeper host class, run this command:
yc managed-kafka cluster update <cluster_name_or_ID> \ --zookeeper-resource-preset <host_class>
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
In the Managed Service for Apache Kafka® cluster description, edit the
resource_preset_idparameter value in thezookeeper.resourcessection to specify a new ZooKeeper host class:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... zookeeper { resources { resource_preset_id = "<ZooKeeper_host_class>" ... } } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Get the list of available host classes:
-
Call the ResourcePreset.list method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/resourcePresets' -
Check the server response to make sure your request was successful.
-
-
Change the host class as appropriate:
-
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.zookeeper.resources.resourcePresetId", "configSpec": { "zookeeper": { "resources": { "resourcePresetId": "<ZooKeeper_host_class_ID>" } } } }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
configSpec.zookeeper.resources.resourcePresetId: To change the ZooKeeper host class.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Get the list of available host classes:
-
Call the ResourcePresetService/List method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/resource_preset_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ResourcePresetService.List -
Check the server response to make sure your request was successful.
-
-
Change the host class as appropriate:
-
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.zookeeper.resources.resource_preset_id" ] }, "config_spec": { "zookeeper": { "resources": { "resource_preset_id": "<ZooKeeper_host_class_ID>" } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
config_spec.zookeeper.resources.resource_preset_id: To change the ZooKeeper host class.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
Changing a KRaft host class
Note
The KRaft host class is only used in clusters with Apache Kafka® 3.6 or higher.
- In the management console
, navigate to the relevant folder. - Go to Managed Service for Kafka.
- In the cluster row, click
and select Edit. - Select a new KRaft host class.
- Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change the class of KRaft hosts:
-
Get information about the cluster:
yc managed-kafka cluster list yc managed-kafka cluster get <cluster_name_or_ID> -
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
To change the KRaft host class, run this command:
yc managed-kafka cluster update <cluster_name_or_ID> \ --controller-resource-preset <host_class>
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
In the Managed Service for Apache Kafka® cluster description, edit the
resource_preset_idparameter value in thekraft.resourcessection to specify a new KRaft host class:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... kraft { resources { resource_preset_id = "<KRaft_host_class>" ... } } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Get the list of available host classes:
-
Call the ResourcePreset.list method, e.g., via the following cURL
request:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/resourcePresets' -
Check the server response to make sure your request was successful.
-
-
Change the host class as appropriate:
-
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.kraft.resources.resourcePresetId", "configSpec": { "kraft": { "resources": { "resourcePresetId": "<KRaft_host_class_ID>" } } } }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
configSpec.kraft.resources.resourcePresetId: To change the KRaft host class.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Get the list of available host classes:
-
Call the ResourcePresetService/List method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/resource_preset_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ResourcePresetService.List -
Check the server response to make sure your request was successful.
-
-
Change the host class as appropriate:
-
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.kraft.resources.resource_preset_id" ] }, "config_spec": { "kraft": { "resources": { "resource_preset_id": "<KRaft_host_class_ID>" } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
config_spec.kraft.resources.resource_preset_id: To change the KRaft host class.
You can get the cluster ID with the list of clusters in the folder. Earlier, you already obtained the list of available host classes with their IDs.
-
-
Check the server response to make sure your request was successful.
-
Changing security group and public access settings
- In the management console
, navigate to the relevant folder. - Go to Managed Service for Kafka.
- In the cluster row, click
and select Edit. - Under Network settings, select the security groups for cluster network traffic.
- Enable or disable Public access to your cluster.
- Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To edit the list of security groups for your cluster:
-
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
Run this command, specifying the security groups and public access settings:
yc managed-kafka cluster update <cluster_name_or_ID> \ --security-group-ids <list_of_security_groups> \ --assign-public-ip=<enable_public_access_to_cluster>Where:
--security-group-ids: List of cluster security group IDs.--assign-public-ip: Public access to the cluster,trueorfalse.
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
Change the values of the
security_group_idsandassign_public_ipparameters in the cluster description:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... security_group_ids = [ <list_of_security_groups> ] ... config { assign_public_ip = "<enable_public_access_to_cluster>" ... } }Where:
security_group_ids: List of cluster security group IDs.assign_public_ip: Public access to the cluster,trueorfalse.
-
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ -url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "securityGroupIds,configSpec.assignPublicIp", "securityGroupIds": [ <list_of_security_group_IDs> ], "configSpec": { "assignPublicIp": "<enable_public_access_to_cluster>" } }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
securityGroupIds: To change the list of security groups.configSpec.assignPublicIp: To change the public access setting.
-
securityGroupIds: Security group IDs as an array of strings. Each string is a security group ID.Warning
The list of security groups assigned to the cluster will be completely overwritten by the list provided in the
securityGroupIdsparameter.Before running your request, make sure the list includes all the required security group IDs, including existing ones.
-
assignPublicIp: Access to broker hosts from the internet,trueorfalse.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "security_group_ids", "config_spec.assign_public_ip" ] }, "security_group_ids": [ <list_of_security_group_IDs> ], "config_spec": { "assign_public_ip": "<enable_public_access_to_cluster>" } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
security_group_ids: To change the list of security groups.config_spec.assign_public_ip: To change the public access setting.
-
security_group_ids: Security group IDs as an array of strings. Each string is a security group ID.Warning
The list of security groups assigned to the cluster will be completely overwritten by the list provided in the
security_group_idsparameter.Before running your request, make sure the list includes all the required security group IDs, including existing ones.
-
assign_public_ip: Access to broker hosts from the internet,trueorfalse.
You can get the cluster ID with the list of clusters in the folder.
-
-
Check the server response to make sure your request was successful.
Restart the cluster so the new public access settings take effect.
You may need to additionally configure security groups to connect to the cluster.
Changing additional cluster settings
-
In the management console
, navigate to the relevant folder. -
Go to Managed Service for Kafka.
-
In the cluster row, click
and select Edit. -
Change additional cluster settings:
-
Maintenance window: Maintenance window settings:
- To enable maintenance at any time, select arbitrary (default).
- To specify the preferred maintenance start time, select by schedule and specify the desired day of the week and UTC hour. For example, you can choose a time when the cluster is least loaded.
Maintenance operations are carried out both on enabled and disabled clusters. They may include updating the DBMS, applying patches, and so on.
-
Deletion protection: Manages cluster protection against accidental deletion.
Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
-
Disk encryption: Enable this setting to encrypt the disks with a custom KMS key.
-
To create a new key, click Create.
-
To use the key you created earlier, select it in the KMS key field.
To learn more about disk encryption, see Storage.
Warning
You can enable disk encryption only when creating a cluster.
-
-
Schema registry: Enable this setting to manage data schemas using Managed Schema Registry.
Warning
You cannot disable data schema management using Managed Schema Registry after connecting it.
-
Kafka Rest API: Enable this setting to allow sending requests to the Apache Kafka® API.
It is implemented based on the Karapace
open-source tool. The Karapace API is compatible with the Confluent REST Proxy API with only minor exceptions.Warning
You cannot disable Kafka Rest API once it is enabled.
-
Kafka UI: Enable this setting to use the Apache Kafka® web UI.
-
-
Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To change additional cluster settings:
-
See the description of the CLI command for updating a cluster:
yc managed-kafka cluster update --help -
Run the following command with the list of settings you want to update:
yc managed-kafka cluster update <cluster_name_or_ID> \ --maintenance-window type=<maintenance_type>,` `day=<day_of_week>,` `hour=<hour> \ --datatransfer-access=<allow_access_from_Data_Transfer> \ --deletion-protection \ --schema-registry=<data_schema_management>
You can update the following settings:
-
--maintenance-window: Maintenance window settings (including for stopped clusters), wheretypeis the maintenance type:anytime: At any time (default).weekly: On a schedule. For this value, also specify the following:day: Day of week, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: Hour of day (UTC), from1to24.
-
--deletion-protection: Cluster protection from accidental deletion,trueorfalse.Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
-
--schema-registry: Manage data schemas using Managed Schema Registry,trueorfalse.Warning
You cannot disable data schema management using Managed Schema Registry after connecting it.
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
To set up the maintenance window (for disabled clusters as well), add the
maintenance_windowsection to the cluster description:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... maintenance_window { type = <maintenance_type> day = <day_of_week> hour = <hour> } ... }Where:
type: Maintenance type. The possible values include:ANYTIME: AnytimeWEEKLY: On a schedule
day: Day of week for theWEEKLYtype, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: UTC hour for theWEEKLYtype, from1to24.
-
To activate cluster protection against accidental deletion by a user of your cloud, add the
deletion_protectionfield set totrueto the cluster description:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... deletion_protection = <protect_cluster_against_deletion> }Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
-
To enable data schema management using Managed Schema Registry, add the
config.schema_registryfield set totrueto the cluster description:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... config { ... schema_registry = <data_schema_management> } }Warning
You cannot disable data schema management using Managed Schema Registry after connecting it.
-
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ -url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.restApiConfig.enabled,configSpec.schemaRegistry,maintenanceWindow,deletionProtection", "configSpec": { "schemaRegistry": true, "restApiConfig": { "enabled": true } }, "maintenanceWindow": { "anytime": {}, "weeklyMaintenanceWindow": { "day": "<day_of_week>", "hour": "<hour_UTC>" } }, "deletionProtection": <protect_cluster_against_deletion> }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
-
configSpec.schemaRegistry: To enable the settings for data schema management using Managed Schema Registry. -
configSpec.restApiConfig.enabled: To enable sending Apache Kafka® REST API requests. -
maintenanceWindow: To change the maintenance window settings, including for stopped clusters. -
deletionProtection: To enable or disable cluster protection from accidental deletion.Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
-
-
configSpec.schemaRegistry: Set totrueto manage data schemas using Managed Schema Registry. You will not be able to edit this setting once it is enabled. -
configSpec.restApiConfig.enabled: Set totrueto enable sending Apache Kafka® REST API requests. You will not be able to edit this setting once it is enabled. -
maintenanceWindow: Maintenance window settings, including for stopped clusters. Select one of these options:anytime: At any time (default).weeklyMaintenanceWindow: On schedule:day: Day of week inDDDformat, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: Time of day (UTC) inHHformat, from1to24.
-
deletionProtection: To enable (true) or disable (false) cluster protection from accidental deletion.Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "maintenance_window", "deletion_protection", "config_spec.schema_registry", "config_spec.rest_api_config.enabled" ] }, "config_spec": { "schema_registry": true, "rest_api_config": { "enabled": true } }, "maintenance_window": { "anytime": {}, "weekly_maintenance_window": { "day": "<day_of_week>", "hour": "<hour_UTC>" } }, "deletion_protection": <protect_cluster_against_deletion> }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
-
config_spec.schema_registry: To manage data schemas using Managed Schema Registry. -
config_spec.rest_api_config.enabled: To enable sending Apache Kafka® REST API requests. -
maintenance_window: To change the maintenance window settings, including for stopped clusters. -
deletion_protection: To enable or disable protection of the cluster, its databases, and users from accidental deletion.
-
-
schema_registry: Set totrueto manage data schemas using Managed Schema Registry. You will not be able to edit this setting once it is enabled. -
rest_api_config.enabled: Set totrueto enable sending Apache Kafka® REST API requests. You will not be able to edit this setting once it is enabled. -
maintenance_window: Maintenance window settings. Select one of these options:anytime: Any time.weekly_maintenance_window: On schedule:day: Day of week inDDDformat, i.e.,MON,TUE,WED,THU,FRI,SAT, orSUN.hour: Time of day (UTC) inHHformat, from1to24.
-
deletion_protection: To enable (true) or disable (false) cluster protection from accidental deletion.Even with cluster deletion protection enabled, one can still delete a user or topic or connect manually and delete the data.
You can get the cluster ID with the list of clusters in the folder.
-
-
Check the server response to make sure your request was successful.
Changing Apache Kafka® settings
-
In the management console
, navigate to the relevant folder. -
Go to Managed Service for Kafka.
-
In the cluster row, click
and select Edit. -
Under Kafka Settings, click Settings.
For more information, see Apache Kafka® settings.
-
Click Save.
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To update the Apache Kafka® settings:
-
See the description of the CLI command for updating cluster settings:
yc managed-kafka cluster update --help -
Run the cluster update command, providing the Apache Kafka® settings you want to change (the example below does not list all possible parameters):
yc managed-kafka cluster update <cluster_name_or_ID> \ --compression-type <compression_type> \ --log-flush-interval-messages <number_of_messages_in_log> \ --log-flush-interval-ms <maximum_time_to_store_messages>Where:
--log-flush-interval-messages: Number of messages in the log to trigger flushing to disk.--log-flush-interval-ms: Maximum time a message can be stored in memory before flushing to disk.
To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
In the Managed Service for Apache Kafka® cluster description, edit the values of the parameters in the
kafka.kafka_configsection (the example below does not list all possible settings):resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... config { kafka { ... kafka_config { compression_type = "<compression_type>" log_flush_interval_messages = <maximum_number_of_messages_in_memory> ... } } } } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.update method, e.g., via the following cURL
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
updateMaskparameter as a single comma-separated string.curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ -url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>' \ --data '{ "updateMask": "configSpec.kafka.kafkaConfig_2_8.<setting_1_for_Apache Kafka®_2.8_configuration>,...,configSpec.kafka.kafkaConfig_2_8.<setting_N_for_Apache Kafka®_2.8_configuration>,configSpec.kafka.kafkaConfig_3.<setting_1_for_Apache Kafka®_3.x_configuration>,...,configSpec.kafka.kafkaConfig_3.<setting_N_for_Apache Kafka®_3.x_configuration>", "configSpec": { "kafka": { "kafkaConfig_2_8": { "<setting_1_for_Apache Kafka®_2.8_configuration>": "<setting_value>", "<setting_2_for_Apache Kafka®_2.8_configuration>": "<setting_value>", ..., "<setting_N_for_Apache Kafka®_2.8_configuration>": "<setting_value>" }, "kafkaConfig_3": { "<setting_1_for_Apache Kafka®_3.x_configuration>": "<setting_value>", "<setting_2_for_Apache Kafka®_3.x_configuration>": "<setting_value>", ..., "<setting_N_for_Apache Kafka®_3.x_configuration>": "<setting_value>" } } } }'Where:
-
updateMask: Comma-separated string of settings you want to update.Specify the relevant parameters:
configSpec.kafka.kafkaConfig_2_8.<setting_for_Apache Kafka®_2.8_configuration>: For Apache Kafka®2.8.configSpec.kafka.kafkaConfig_3.<setting_for_Apache Kafka®_3.x_configuration>: For Apache Kafka®3.x.
-
configSpec.kafka.kafkaConfig_2_8.<setting_for_Apache Kafka®_2.8_configuration: Specify a new value for the setting if using Apache Kafka®2.8. -
configSpec.kafka.kafkaConfig_3.<setting_for_Apache Kafka®_3.x_configuration: Specify a new value for the setting if using Apache Kafka®3.x.
You can get the cluster ID with the list of clusters in the folder.
-
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Call the ClusterService/Update method, e.g., via the following gRPCurl
request:Warning
The API method will assign default values to all the parameters of the object you are modifying unless you explicitly provide them in your request. To avoid this, list the settings you want to change in the
update_maskparameter as an array ofpaths[]strings.Format for listing settings
"update_mask": { "paths": [ "<setting_1>", "<setting_2>", ... "<setting_N>" ] }grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "update_mask": { "paths": [ "config_spec.kafka.kafka_config_2_8.<setting_1_for_Apache Kafka®_2.8_configuration>", ..., "config_spec.kafka.kafka_config_2_8.<setting_N_for_Apache Kafka®_2.8_configuration>", "config_spec.kafka.kafka_config_3.<setting_1_for_Apache Kafka®_3.x_configuration>", ..., "config_spec.kafka.kafka_config_3.<setting_N_for_Apache Kafka®_3.x_configuration>" ] } "config_spec": { "kafka": { "kafka_config_2_8": { "<setting_1_for_Apache Kafka®_2.8_configuration>": "<setting_value>", "<setting_2_for_Apache Kafka®_2.8_configuration>": "<setting_value>", ..., "<setting_N_for_Apache Kafka®_2.8_configuration>": "<setting_value>" }, "kafka_config_3": { "<setting_1_for_Apache Kafka®_3.x_configuration>": "<setting_value>", "<setting_2_for_Apache Kafka®_3.x_configuration>": "<setting_value>", ..., "<setting_N_for_Apache Kafka®_3.x_configuration>": "<setting_value>" } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.UpdateWhere:
-
update_mask: List of settings you want to update as an array of strings (paths[]).Specify the relevant parameters:
config_spec.kafka.kafka_config_2_8.<setting_for_Apache Kafka®_2.8_configuration>: For Apache Kafka®2.8.config_spec.kafka.kafka_config_3.<setting_for_Apache Kafka®_3.x_configuration>: For Apache Kafka®3.x.
-
config_spec.kafka.kafka_config_2_8.<setting_for_Apache Kafka®_2.8_configuration: Specify a new value for the setting if using Apache Kafka®2.8. -
config_spec.kafka.kafka_config_3.<setting_for_Apache Kafka®_3.x_configuration: Specify a new value for the setting if using Apache Kafka®3.x.
You can get the cluster ID with the list of clusters in the folder.
-
-
Check the server response to make sure your request was successful.
Moving a cluster to another folder
If you do not have the Yandex Cloud CLI installed yet, install and initialize it.
By default, the CLI uses the folder specified when creating the profile. To change the default folder, use the yc config set folder-id <folder_ID> command. You can also set a different folder for any specific command using the --folder-name or --folder-id parameter.
To move a cluster:
-
View the description of the CLI command for moving a cluster:
yc managed-kafka cluster move --help -
Specify the destination folder in the cluster move command:
yc managed-kafka cluster move <cluster_name_or_ID> \ --destination-folder-name=<destination_folder_name>To find out the cluster name or ID, get the list of clusters in the folder.
-
Open the current Terraform configuration file describing your infrastructure.
Learn how to create this file in Creating a cluster.
-
In the Managed Service for Apache Kafka® cluster description, edit or add the
folder_idparameter value:resource "yandex_mdb_kafka_cluster" "<cluster_name>" { ... folder_id = "<destination_folder_ID>" } -
Make sure the settings are correct.
-
In the command line, navigate to the directory that contains the current Terraform configuration files defining the infrastructure.
-
Run this command:
terraform validateTerraform will show any errors found in your configuration files.
-
-
Confirm updating the resources.
-
Run this command to view the planned changes:
terraform planIf you described the configuration correctly, the terminal will display a list of the resources to update and their parameters. This is a verification step that does not apply changes to your resources.
-
If everything looks correct, apply the changes:
-
Run this command:
terraform apply -
Confirm updating the resources.
-
Wait for the operation to complete.
-
-
For more information, see this Terraform provider guide.
Time limits
The Terraform provider limits the amount of time for all Managed Service for Apache Kafka® cluster operations to complete to 60 minutes.
Operations exceeding the set timeout are interrupted.
How do I change these limits?
Add the timeouts block to the cluster description, for example:
resource "yandex_mdb_kafka_cluster" "<cluster_name>" {
...
timeouts {
create = "1h30m" # 1 hour 30 minutes
update = "2h" # 2 hours
delete = "30m" # 30 minutes
}
}
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Call the Cluster.move method, e.g., via the following cURL
request:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ -url 'https://mdb.api.cloud.yandex.net/managed-kafka/v1/clusters/<cluster_ID>:move' \ --data '{ "destinationFolderId": "<folder_ID>" }'You can get the cluster ID with the list of clusters in the folder.
-
View the server response to make sure your request was successful.
-
Get an IAM token for API authentication and put it into an environment variable:
export IAM_TOKEN="<IAM_token>" -
Clone the cloudapi
repository:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiBelow, we assume that the repository contents reside in the
~/cloudapi/directory. -
Call the ClusterService/Move method, e.g., via the following gRPCurl
request:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/kafka/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<cluster_ID>", "destination_folder_id": "<folder_ID>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.kafka.v1.ClusterService.MoveYou can get the cluster ID with the list of clusters in the folder.
-
Check the server response to make sure your request was successful.