Logotipo de Zephyrnet

Externalice las configuraciones de Amazon MSK Connect con Terraform | Servicios web de Amazon

Fecha:

Gestionar configuraciones para Conexión de Amazon MSK, una característica de Streaming administrado por Amazon para Apache Kafka (Amazon MSK), puede resultar un desafío, especialmente a medida que crece el número de temas y configuraciones. En esta publicación, abordamos esta complejidad utilizando Terraform para optimizar la configuración del tema Kafka al conector Sink de Amazon S3. Al adoptar este enfoque estratégico, puede establecer un mecanismo sólido y automatizado para manejar las configuraciones de MSK Connect, eliminando la necesidad de intervención manual o reinicios del conector. Esta solución eficiente ahorrará tiempo, reducirá errores y brindará un mejor control sobre sus procesos de transmisión de datos de Kafka. Exploremos cómo Terraform puede simplificar y mejorar la gestión de las configuraciones de MSK Connect para una integración perfecta con su infraestructura.

Resumen de la solución

Para un conocido cliente de AWS, la gestión de sus temas en constante crecimiento sobre el conector MSK Connect S3 Sink se ha convertido en un desafío importante. Los desafíos radican en la sobrecarga de administrar las configuraciones, así como en la gestión de parches y actualizaciones. Manejar manualmente las configuraciones de Kubernetes (K8s) y reiniciar los conectores puede ser engorroso y propenso a errores, lo que dificulta el seguimiento de los cambios y actualizaciones. Al momento de escribir esta publicación, MSK Connect no ofrece mecanismos nativos para externalizar fácilmente el tema de Kafka a la configuración de S3 Sink.

Para abordar estos desafíos, presentamos Terraform, una herramienta de infraestructura como código (IaC). El enfoque declarativo de Terraform y su extenso ecosistema lo convierten en una opción ideal para administrar configuraciones de MSK Connect.

Al externalizar el tema de Kafka a configuraciones S3, las organizaciones pueden lograr lo siguiente:

  • Escalabilidad – Administre sin esfuerzo un número creciente de temas, garantizando que el sistema pueda manejar volúmenes de datos cada vez mayores sin dificultad.
  • Flexibilidad – Integre perfectamente las configuraciones de MSK Connect con otros componentes y servicios de infraestructura, lo que permite la adaptabilidad a las necesidades comerciales cambiantes.
  • Automatización – Automatizar la implementación y gestión de configuraciones de MSK Connect, reduciendo la intervención manual y agilizando las tareas operativas.
  • Gestión centralizada – Logre una mejor gobernanza con gestión centralizada, control de versiones, auditoría y seguimiento de cambios, asegurando un mejor control y visibilidad de las configuraciones.

En las siguientes secciones, proporcionamos una guía detallada sobre cómo establecer la gestión de configuración de Terraform para MSK Connect, definir y descentralizar configuraciones de temas e implementar y actualizar configuraciones utilizando Terraform.

Requisitos previos

Antes de continuar con la solución, asegúrese de tener los siguientes recursos y acceso:

  • Necesita acceso a una cuenta de AWS con permisos suficientes para crear y administrar recursos, incluidos Gestión de identidades y accesos de AWS (IAM) y clústeres de MSK.
  • Para simplificar la configuración, utilice el AWS CloudFormation proporcionado plantilla. Esta plantilla creará el clúster MSK necesario y los recursos necesarios para esta publicación.
  • Para esta publicación, utilizamos la última versión de Terraform (1.5.6).

Al asegurarse de tener estos requisitos previos implementados, estará listo para seguir las instrucciones y optimizar sus configuraciones de MSK Connect con Terraform. ¡Empecemos!

Preparar

La configuración de Terraform para la gestión de configuración de MSK Connect incluye lo siguiente:

  • Instalación de Terraform y configuración del entorno.
  • Configurar la autenticación y los permisos necesarios

La definición y descentralización de configuraciones de temas utilizando Terraform incluye lo siguiente:

  • Comprender la estructura de los archivos de configuración de Terraform
  • Determinar las variables y recursos necesarios
  • Utilizando los módulos de Terraform y la interpolación para mayor flexibilidad

La decisión de externalizar la configuración fue impulsada principalmente por los requisitos comerciales del cliente. Anticiparon la necesidad de agregar temas periódicamente y querían evitar la necesidad de bajar y escribir código específico cada vez. Dadas las limitaciones de MSK Connect (al momento de escribir este artículo), es importante tener en cuenta que MSK Connect puede manejar hasta 300 trabajadores. Para esta prueba de concepto (POC), optamos por una configuración con 100 temas dirigidos a un solo Servicio de almacenamiento simple de Amazon (Amazon S3) cubo. Para garantizar la compatibilidad dentro del límite de 300 trabajadores, configuramos el recuento de MCU en 1 y configuramos el escalado automático con un máximo de 2 trabajadores. Esto garantiza que la configuración se mantenga dentro de los límites del máximo de 300 trabajadores.

Para hacer la configuración más flexible, especificamos las variables que se pueden utilizar en el código.(variables.tf):

variable "aws_region" {
description = "The AWS region to deploy resources in."
type = string
} variable "s3_bucket_name" {
description = "s3_bucket_name."
type = string
} variable "topics" {
description = "topics"
type = string
} variable "msk_connect_name" {
description = "Name of the MSK Connect instance."
type = string
} variable "msk_connect_description" {
description = "Description of the MSK Connect instance."
type = string
} # Rest of the variables...

Para configurar el conector AWS MSK para el receptor S3, debemos proporcionar varias configuraciones. Examinemos el connector_configuration bloque en el fragmento de código proporcionado en el main.tf archivo con más detalle:

connector_configuration = { "connector.class" = "io.confluent.connect.s3.S3SinkConnector" "s3.region" = "us-east-1" "flush.size" = "5" "schema.compatibility" = "NONE" "tasks.max" = "1" "topics" = var.topics "format.class" = "io.confluent.connect.s3.format.json.JsonFormat" "partitioner.class" = "io.confluent.connect.storage.partitioner.DefaultPartitioner" "value.converter.schemas.enable" = "false" "value.converter" = "org.apache.kafka.connect.json.JsonConverter" "storage.class" = "io.confluent.connect.s3.storage.S3Storage" "key.converter" = "org.apache.kafka.connect.storage.StringConverter" "s3.bucket.name" = var.s3_bucket_name "topics.dir" = "cxdl-data/KairosTelemetry"
}

El proyecto kafka_cluster El bloque en el fragmento de código define los detalles del clúster de Kafka, incluidos los servidores de arranque y la configuración de VPC. Puede hacer referencia a las variables para especificar los valores adecuados:

kafka_cluster {
apache_kafka_cluster {
bootstrap_servers = var.bootstrap_servers vpc {
security_groups = [var.security_groups]
subnets = [var.aws_subnet_example1_id, var.aws_subnet_example2_id, var.aws_subnet_example3_id]
}
}
}

Para asegurar la conexión entre Kafka y el conector, el fragmento de código incluye configuraciones para autenticación y cifrado:

  • El proyecto kafka_cluster_client_authentication El bloque establece el tipo de autenticación en IAM, lo que permite el uso de IAM para la autenticación.
  • El proyecto kafka_cluster_encryption_in_transit El bloque permite el cifrado TLS para la transferencia de datos entre Kafka y el conector.
 kafka_cluster_client_authentication { authentication_type = "IAM" } kafka_cluster_encryption_in_transit { encryption_type = "TLS" }

Puede externalizar las variables y proporcionar valores dinámicos utilizando un var.tfvars archivo. Supongamos el contenido del var.tfvars archivo es el siguiente:

aws_region = "us-east-1"
msk_connect_name = "confluentinc-MSK-connect-s3-2"
msk_connect_description = "My MSK Connect instance"
s3_bucket_name = "msk-lab-xxxxxxxxxxxx-target-bucket"
topics = "salesdb.salesdb.CUSTOMER,salesdb.salesdb.CUSTOMER_SITE,salesdb.salesdb.PRODUCT,salesdb.salesdb.PRODUCT_CATEGORY,salesdb.salesdb.SALES_ORDER,salesdb.salesdb.SALES_ORDER_ALL,salesdb.salesdb.SALES_ORDER_DETAIL,salesdb.salesdb.SALES_ORDER_DETAIL_DS,salesdb.salesdb.SUPPLIER"
bootstrap_servers = "b-2.mskclustermskconnectl.4xwlfx.c11.kafka.us-east-1.amazonaws.com:9098,b-3.mskclustermskconnectl.4xwlfx.c11.kafka.us-east-1.amazonaws.com:9098,b-1.mskclustermskconnectl.4xwlfx.c11.kafka.us-east-1.amazonaws.com:9098“
aws_subnet_example1_id = "subnet-016ef7bb5f5db5759"
aws_subnet_example2_id = "subnet-0114c390d379134fa"
aws_subnet_example3_id = "subnet-0f6352ad89a1454f2"
security_groups = "sg-07eb8f8e4559334e7"
aws_mskconnect_custom_plugin_example_arn = "arn:aws:kafkaconnect:us-east-1:xxxxxxxxxxxx:custom-plugin/confluentinc-kafka-connect-s3-10-0-3/e9aeb52e-d172-4dba-9de5-f5cf73f1cb9e-2"
aws_mskconnect_custom_plugin_example_latest_revision = "1"
aws_iam_role_example_arn = "arn:aws:iam::xxxxxxxxxxxx:role/msk-connect-lab-S3ConnectorIAMRole-3LBTU7YAV9CM"

Implementar y actualizar configuraciones usando Terraform

Una vez que haya definido su infraestructura MSK Connect usando Terraform, aplicar estas configuraciones es un proceso sencillo para crear o actualizar su infraestructura. Esto resulta particularmente conveniente cuando es necesario agregar un nuevo tema. Gracias a la configuración externalizada, incorporar este cambio ahora es una tarea sencilla. Los pasos son los siguientes:

  1. Descargue e instale Terraform desde el sitio web oficial (https://www.terraform.io/downloads.html) para su sistema operativo.
  2. Confirme la instalación ejecutando el comando de versión terraform en su interfaz de línea de comando.
  3. Asegúrese de haber configurado sus credenciales de AWS mediante el Interfaz de línea de comandos de AWS (AWS CLI) o configurando variables de entorno. Puede utilizar el comando aws configure para configurar sus credenciales si utiliza la CLI de AWS.
  4. Coloque los archivos main.tf, variables.tf y var.tfvars en el mismo directorio de Terraform.
  5. Abra una interfaz de línea de comando, navegue hasta el directorio que contiene los archivos de Terraform y ejecute el comando terraform init para inicializar Terraform y descargar los proveedores necesarios.
  6. Ejecuta el comando terraform plan -var-file="var.tfvars" para revisar el plan de ejecución.

Este comando muestra los cambios que Terraform realizará en la infraestructura en función de las variables proporcionadas. Este paso es opcional pero a menudo se utiliza como vista previa de los cambios que realizará Terraform.

  1. Si el plan parece correcto, ejecute el comando terraform apply -var-file="var.tfvars" para aplicar la configuración.

Terraform creará el MSK_Connect en su cuenta de AWS. Esto le pedirá confirmación antes de continuar.

  1. Una vez completado el comando terraform apply, verifique que la infraestructura se haya creado o actualizado en la consola.
  2. Para cualquier cambio o actualización, modifique sus archivos Terraform (main.tf, variables.tf, var.tfvars) según sea necesario y luego vuelva a ejecutar los comandos terraform plan y terraform apply.
  3. Cuando ya no necesites la infraestructura, puedes usar terraform destroy -var-file="var.tfvars" para eliminar todos los recursos creados por sus archivos Terraform.

Tenga cuidado con este comando porque eliminará todos los recursos definidos en sus archivos Terraform.

Conclusión

En esta publicación, abordamos los desafíos que enfrenta un cliente al administrar las configuraciones de MSK Connect y describimos una solución basada en Terraform. Al externalizar el tema Kafka a las configuraciones de Amazon S3, puede optimizar sus procesos de administración de configuración, lograr escalabilidad, mejorar la flexibilidad, automatizar implementaciones y centralizar la administración. Le recomendamos que utilice Terraform para optimizar sus configuraciones de MSK Connect y explorar más posibilidades para administrar sus canalizaciones de datos de transmisión de manera eficiente.

Para comenzar a externalizar las configuraciones de MSK Connect mediante Terraform, consulte los pasos de implementación proporcionados y la Guía de introducción a Terraform, Documentación de conexión de MSK, Documentación de Terraformy ejemplo de repositorio de GitHub.

El uso de Terraform para externalizar el tema de Kafka a la configuración de Amazon S3 Sink en MSK Connect ofrece una solución poderosa para administrar y escalar sus canales de transmisión de datos. Al automatizar la implementación, actualización y administración central de configuraciones, puede garantizar eficiencia, flexibilidad y escalabilidad en sus flujos de trabajo de procesamiento de datos.


Sobre la autora

RamC Venkatasamy es un arquitecto de soluciones con sede en Bloomington, Illinois. Ayuda a los clientes estratégicos de AWS a transformar sus negocios en la nube. Con un ferviente entusiasmo por la arquitectura sin servidor, basada en eventos y GenAI.

punto_img

Información más reciente

punto_img