As organizations deploy Amazon Managed Streaming for Apache Kafka (Amazon MSK) clusters throughout a number of use circumstances, the guide administration of subject configurations may be difficult. This could result in a number of points:
- Inefficiency – Guide configuration is time-consuming and error-prone, particularly for giant deployments. Sustaining consistency throughout a number of configurations may be tough. To keep away from this, Kafka directors typically set the create.subjects.allow property on brokers, which ends up in cluster operation inefficiency.
- Human error – Guide configuration will increase the danger of errors that may disrupt information circulate and influence purposes counting on Amazon MSK.
- Scalability challenges – Scaling an Amazon MSK atmosphere with guide configuration is cumbersome. Including new subjects or modifying present ones requires guide intervention, hindering agility.
These challenges spotlight the necessity for a extra automated and sturdy strategy to MSK subject configuration administration.
On this put up, we tackle this drawback through the use of Terraform to optimize the configuration of MSK subjects. This resolution helps each provisioned and serverless MSK clusters.
Resolution overview
Clients need a greater solution to handle the overhead of subjects and their configurations. Manually dealing with subject configurations may be cumbersome and error-prone, making it tough to maintain observe of adjustments and updates.
To deal with these challenges, you should utilize Terraform, an infrastructure as code (IaC) software by HashiCorp. Terraform means that you can handle and provision infrastructure declaratively. It makes use of human-readable configuration information written in HashiCorp Configuration Language (HCL) to outline the specified state of infrastructure assets. These assets can span digital machines, networks, databases, and an unlimited array of cloud provider-specific choices.
Terraform provides a compelling resolution to the challenges of guide Kafka subject configuration. Terraform means that you can outline and handle your Kafka subjects by way of code. This strategy gives a number of key advantages:
- Automation – Terraform automates the creation, modification, and deletion of MSK subjects.
- Consistency and repeatability – Terraform configurations present constant subject buildings and settings throughout your total Amazon MSK atmosphere. This simplifies administration and reduces the chance of configuration drift.
- Scalability – Terraform allows you to provision and handle massive numbers of MSK subjects, facilitating the expansion of your Amazon MSK atmosphere.
- Model management – Terraform configurations are saved in model management programs, permitting you to trace adjustments, roll again if wanted, and collaborate successfully in your Amazon MSK infrastructure.
Through the use of Terraform for MSK subject configuration administration, you’ll be able to streamline your operations, decrease errors, and have a sturdy and scalable Amazon MSK atmosphere.
On this put up, we offer a complete information for utilizing Terraform to handle Amazon MSK configurations. We discover the method of putting in Terraform on Amazon Elastic Compute Cloud (Amazon EC2), defining and decentralizing subject configurations, and deploying and updating configurations in an automatic method.
Conditions
Earlier than continuing with the answer, be sure you have the next assets and entry:
- To simplify the setup, use the supplied AWS CloudFormation template. This template will create the required Amazon MSK provisioned cluster and required assets for this put up. You possibly can create an MSK Serverless cluster utilizing the Amazon MSK console and use it on this resolution. That is pattern template, not manufacturing prepared, and AWS Identification and Entry Administration (IAM) insurance policies ought to be applied utilizing finest practices and the precept of least privilege. For extra particulars, see Get began with AWS managed insurance policies and transfer towards least-privilege permissions. An EC2 occasion will probably be created as part of this template. The MSK cluster and EC2 occasion will probably be created on a single digital personal cloud (VPC); nonetheless, you’ll be able to set up Terraform in a distinct account or on completely different VPC. For extra particulars, see Join Kafka consumer purposes securely to your Amazon MSK cluster from completely different VPCs and AWS accounts.
- For this put up, we use the newest Terraform model (1.10.x) and Terraform plugins – Mongey/Kafka supplier. In Terraform, plugins are binary executables answerable for implementing useful resource sorts and suppliers. The plugins are put in robotically after we initialize a Terraform configuration utilizing the terraform init
- You want entry to an AWS account with adequate permissions to create and handle assets, together with IAM roles and MSK clusters. For extra info, see IAM entry management.
By ensuring you have got these stipulations in place, you may be able to streamline your subject configurations with Terraform.
Set up Terraform in your consumer machine
When your cluster and consumer machine are prepared, SSH to your consumer machine (Amazon EC2) and set up Terraform.
- Run the next instructions to put in Terraform:
- Run the next command to verify the set up:
This means that Terraform set up is profitable and you might be able to automate your MSK subject configuration.
Provision an MSK subject utilizing Terraform
To provision the MSK subject, full the next steps:
- Create a brand new file referred to as
principal.tfand replica the next code into this file, changing the BOOTSTRAP_SERVERS and AWS_REGION info with the small print to your cluster. For directions on retrieving thebootstrap_serversinfo for IAM authentication out of your MSK cluster, see Getting the bootstrap brokers for an Amazon MSK cluster. This script is widespread for Amazon MSK provisioned and MSK Serverless. - Add IAM bootstrap servers endpoints in a comma separated checklist format:
- Run the command
terraform initto initialize Terraform and obtain the required suppliers.

The terraform init command initializes a working listing containing Terraform configuration information(principal.tf). That is the primary command that ought to be run after writing a brand new Terraform configuration.
- Run the command
terraform planto overview the run plan.

This command reveals the adjustments that Terraform will make to the infrastructure based mostly on the supplied configuration. This step is non-compulsory however is usually used as a preview of the adjustments Terraform will make.
- If the plan appears to be like appropriate, run the command
terraform applyto use the configuration. - When prompted for affirmation earlier than continuing, enter
sure.

The terraform apply command runs the actions proposed in a Terraform plan. Terraform will create the sampleTopic subject in your MSK cluster.
- After the
terraform applycommand is full, confirm the infrastructure has been created with the assistance of the kafka-topics.sh utility:

You should utilize the kafka-toipcs.sh software with the --list choice to retrieve a listing of subjects related together with your MSK cluster. For extra info, discuss with the createtopic documentation.
Replace the MSK subject configuration utilizing Terraform
To replace the MSK subject configuration, let’s assume we wish to change the variety of partitions from 50 to 10 on our subject. We have to carry out the next steps:
- Confirm the variety of partitions on the subject utilizing the
--describecommand:

This command will present 50 partitions on the sampleTopic subject.
- Modify the Terraform file
principal.tfand alter the worth of the partitions parameter to 10: - Run the command
terraform planto overview the run plan.

- If the plan reveals the adjustments, run the command
terraform applyto use the configuration. - When prompted for affirmation earlier than continuing, enter
sure.

Terraform will drop and recreate the sampleTopic subject with the modified configuration.
- Confirm the modified variety of partitions on the subject, advert rerun the
--describecommand:

Now, this command will present 10 partitions on the sampleTopic subject.
Delete the MSK subject utilizing Terraform
While you not want the infrastructure, you’ll be able to take away all assets created by your Terraform file.
- Run the command
terraform destroyto take away the subject. - When prompted for affirmation earlier than continuing, enter
sure.

Terraform will delete the sampleTopic subject out of your MSK cluster.
- To confirm, rerun the
--listcommand:

Now, this command is not going to present the sampleTopic subject.
Conclusion
On this put up, we addressed the widespread challenges related to guide MSK subject configuration administration and introduced a sturdy Terraform-based resolution. Utilizing Terraform for automated subject provisioning and configuration streamlines your processes, fosters scalability, and enhances flexibility. Moreover, it facilitates automated deployments and centralized administration.
We encourage you to discover Terraform as a way to optimize Amazon MSK configurations and unlock additional efficiencies inside your streaming information pipelines.
Concerning the creator
Vijay Kardile is a Sr. Technical Account Supervisor with Enterprise Help, India. With over 20 years of expertise in IT Consulting and Engineering, he makes a speciality of Analytics providers, notably Amazon EMR and Amazon MSK. He has empowered quite a few enterprise purchasers by facilitating their adoption of varied AWS providers and providing professional steering on attaining operational excellence.
