En este instructivo, se muestra cómo transferir mensajes de Pub/Sub a tu clúster de Managed Service para Apache Kafka con Kafka Connect.
Kafka Connect administra el movimiento de datos entre tu clúster de Kafka y otros sistemas. En este instructivo, crearás un clúster de Connect y un conector de fuente de Pub/Sub. El conector de origen de Pub/Sub lee mensajes de tu tema de Pub/Sub y los escribe en un tema de Kafka.
Antes de comenzar
Console
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Asegúrate de tener los siguientes roles en el proyecto: Editor de clústeres de Kafka administrado, Editor de clústeres de Kafka Connect administrado, Editor de conectores de Kafka administrado, Editor de temas de Kafka administrado, Editor de Pub/Sub
Verifica los roles
-
En la consola de Google Cloud , dirígete a la página IAM.
Ir a IAM - Selecciona el proyecto.
-
En la columna Principal, busca todas las filas que te identifiquen a ti o a un grupo en el que se te incluya. Para saber en qué grupos estás incluido, comunícate con tu administrador.
- Para todas las filas en las que se te especifique o se te incluya, verifica la columna Rol para ver si la lista de roles incluye los roles necesarios.
Otorga los roles
-
En la consola de Google Cloud , dirígete a la página IAM.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Otorgar acceso.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- Haz clic en Seleccionar un rol y, luego, busca el rol.
- Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega uno más.
- Haz clic en Guardar.
-
gcloud
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un Google Cloud proyecto:
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu Google Cloud proyecto.
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita la API de Managed Kafka:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.gcloud services enable managedkafka.googleapis.com
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Crea o selecciona un Google Cloud proyecto.
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un Google Cloud proyecto:
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto Google Cloud que estás creando. -
Selecciona el proyecto Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu Google Cloud proyecto.
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita la API de Managed Kafka:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.gcloud services enable managedkafka.googleapis.com
-
Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditor, roles/managedkafka.topicEditor, roles/pubsub.editorgcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoUSER_IDENTIFIER: Es el identificador de tu cuenta de usuario de . Por ejemplo,myemail@example.com.ROLE: Es el rol de IAM que otorgas a tu cuenta de usuario.
Crear un tema de Pub/Sub y una suscripción
En este paso, crearás un tema de Pub/Sub con una suscripción.
Console
Ve a la página Temas de Pub/Sub >.
Haz clic en Crear tema.
En el cuadro ID de tema, ingresa un nombre para el tema.
Asegúrate de que la casilla de verificación Agregar una suscripción predeterminada esté seleccionada.
Haz clic en Crear.
gcloud
Para crear un tema de Pub/Sub, ejecuta el comando
gcloud pubsub topics create.gcloud pubsub topics create TOPIC_IDReemplaza
TOPIC_IDpor un nombre para tu tema de Pub/Sub.Para crear una suscripción a un tema, ejecuta el comando
gcloud pubsub subscriptions create:gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_IDReemplaza
SUBSCRIPTION_IDpor un nombre para tu suscripción a Pub/Sub.
Para obtener información sobre cómo asignar nombres a temas y suscripciones de Pub/Sub, consulta los Lineamientos para asignar un nombre a un tema o una suscripción.
Crea recursos de Managed Service para Apache Kafka
En esta sección, crearás los siguientes recursos de Managed Service para Apache Kafka:
- Un clúster de Kafka con un tema
- Un clúster de Connect con un conector de Pub/Sub
Crea un clúster de Kafka
En este paso, crearás un clúster de Managed Service para Apache Kafka. La creación de un clúster puede tardar hasta 30 minutos.
Console
- Ve a la página Clústeres de Managed Service para Apache Kafka >.
- Haz clic en Crear.
- En el cuadro Nombre del clúster, ingresa un nombre para el clúster.
- En la lista Región, selecciona una ubicación para el clúster.
-
En Configuración de red, configura la subred en la que se puede acceder al clúster:
- En Proyecto, seleccione su proyecto.
- En Red, selecciona la red de VPC.
- En Subred, selecciona la subred.
- Haz clic en Listo.
- Haz clic en Crear.
Después de hacer clic en Crear, el estado del clúster es Creating. Cuando el clúster esté listo, el estado será Active.
gcloud
Para crear un clúster de Kafka, ejecuta el comando managed-kafka clusters
create.
gcloud managed-kafka clusters create KAFKA_CLUSTER \ --location=REGION \ --cpu=3 \ --memory=3GiB \ --subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --async
Reemplaza lo siguiente:
KAFKA_CLUSTER: Es un nombre para el clúster de Kafka.REGION: Es la ubicación del clúster.PROJECT_ID: Es el ID del proyecto.SUBNET_NAME: Es la subred en la que deseas crear el clúster, por ejemplo,default.
Para obtener información sobre las ubicaciones admitidas, consulta las ubicaciones de Managed Service para Apache Kafka.
El comando se ejecuta de forma asíncrona y muestra un ID de operación:
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Para hacer un seguimiento del progreso de la operación de creación, usa el comando gcloud managed-kafka
operations describe:
gcloud managed-kafka operations describe OPERATION_ID \ --location=REGION
Cuando el clúster esté listo, el resultado de este comando incluirá la entrada state:
ACTIVE. Para obtener más información, consulta Cómo supervisar la operación de creación del clúster.
Crea un tema de Kafka
Después de crear el clúster de Managed Service para Apache Kafka, crea un tema de Kafka.
Console
Ve a la página Managed Service para Apache Kafka > Clústeres.
Haz clic en el nombre del clúster.
En la página de detalles del clúster, haz clic en Crear tema.
En el cuadro Nombre del tema, ingresa un nombre para el tema.
Haz clic en Crear.
gcloud
Para crear un tema de Kafka, ejecuta el comando managed-kafka topics create.
gcloud managed-kafka topics create KAFKA_TOPIC_NAME \
--cluster=KAFKA_CLUSTER \
--location=REGION \
--partitions=10 \
--replication-factor=3
Reemplaza lo siguiente:
KAFKA_TOPIC_NAME: Es el nombre del tema de Kafka que se creará.KAFKA_CLUSTER: El nombre del clúster de KafkaREGION: Es la región en la que creaste el clúster de Kafka.
Crea un clúster de Connect
En este paso, crearás un clúster de Connect. La creación de un clúster de Connect puede tardar hasta 30 minutos.
Antes de comenzar con este paso, asegúrate de que el clúster de Managed Service para Apache Kafka esté completamente creado.
Console
Ve a la página Connect Clusters de Managed Service para Apache Kafka >.
Haz clic en Crear.
En Nombre del clúster de Connect, ingresa una cadena. Ejemplo:
my-connect-cluster.En Clúster principal de Kafka, selecciona el clúster de Kafka que creaste antes.
Haz clic en Crear.
Mientras se crea el clúster, su estado es Creating. Cuando se termina de crear el clúster, el estado es Active.
gcloud
Para crear un clúster de Connect, ejecuta el comando gcloud managed-kafka connect-clusters create.
gcloud managed-kafka connect-clusters create CONNECT_CLUSTER \
--location=REGION \
--cpu=12 \
--memory=12GiB \
--primary-subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--kafka-cluster=KAFKA_CLUSTER \
--async
Reemplaza lo siguiente:
CONNECT_CLUSTER: Un nombre para el clúster de ConnectREGION: Es la región en la que creaste el clúster de Kafka.PROJECT_ID: Es el ID del proyecto.SUBNET_NAME: La subred en la que creaste el clúster de KafkaKAFKA_CLUSTER: Es el nombre de tu clúster de Kafka.
El comando se ejecuta de forma asíncrona y muestra un ID de operación:
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Para hacer un seguimiento del progreso de la operación de creación, usa el comando gcloud managed-kafka operations describe:
gcloud managed-kafka operations describe OPERATION_ID \
--location=REGION
Para obtener más información, consulta Cómo supervisar la operación de creación del clúster.
Asigna roles de IAM
Otorga los siguientes roles de Identity and Access Management (IAM) a la cuenta de servicio de Managed Kafka:
- Suscriptor de Pub/Sub
- Visualizador de Pub/Sub
Estos roles permiten que los conectores lean mensajes de Pub/Sub.
Console
En la consola de Google Cloud , dirígete a la página IAM.
Selecciona Incluir asignaciones de roles proporcionadas por Google.
Busca la fila de Managed Kafka Service Account y haz clic en Editar principal.
Haz clic en Agregar otro rol y selecciona el rol Suscriptor de Pub/Sub. Repite este paso para el rol de Visualizador de Pub/Sub.
Haz clic en Guardar.
Para obtener más información para otorgar roles, consulta Otorga un rol de IAM con la consola.
gcloud
Para otorgar roles de IAM a la cuenta de servicio, ejecuta el comando gcloud projects add-iam-policy-binding.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
--role=roles/pubsub.subscriber
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
--role=roles/pubsub.viewer
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto.PROJECT_NUMBER: Es el número de tu proyecto.
Para encontrar el número de tu proyecto, usa el comando gcloud projects describe.
Crea un conector de fuente de Pub/Sub
En este paso, crearás un conector de fuente de Pub/Sub. Este conector lee mensajes de Pub/Sub y los escribe en un tema de Kafka.
Console
Ve a la página Connect Clusters de Managed Service para Apache Kafka >.
Haz clic en el nombre del clúster de Connect.
Haz clic en Crear conector.
En Nombre del conector, ingresa una cadena. Ejemplo:
pubsub-source.En la lista Complemento del conector, selecciona
Pub/Sub Source.En Suscripción a Cloud Pub/Sub, selecciona el Pub/Sub predeterminado que se creó cuando creaste el tema de Pub/Sub.
En Kafka topic, selecciona el tema de Kafka que creaste anteriormente.
Haz clic en Crear.
gcloud
Para crear un conector de fuente de Pub/Sub, ejecuta el comando gcloud managed-kafka connectors create.
gcloud managed-kafka connectors create PUBSUB_CONNECTOR_NAME \
--connect-cluster=CONNECT_CLUSTER \
--location=REGION \
--configs=connector.class=com.google.pubsub.kafka.source.CloudPubSubSourceConnector,\
cps.project=PROJECT_ID,\
cps.streamingPull.enabled=true,\
cps.subscription=SUBSCRIPTION_ID,\
kafka.topic=KAFKA_TOPIC_NAME,\
key.converter=org.apache.kafka.connect.storage.StringConverter,\
tasks.max=3,\
value.converter=org.apache.kafka.connect.converters.ByteArrayConverter
Reemplaza lo siguiente:
PUBSUB_CONNECTOR_NAME: Es un nombre para el conector, comopubsub-source-connector.CONNECT_CLUSTER: El nombre de tu clúster de ConnectREGION: Es la región en la que creaste el clúster de Connect.PROJECT_ID: Es el ID del proyecto.KAFKA_TOPIC_NAME: El nombre de tu tema de KafkaSUBSCRIPTION_ID: Es el nombre de tu suscripción a Pub/Sub.
Ver resultados
Para ver los resultados, publica algunos mensajes en Pub/Sub.
Console
En la consola de Google Cloud , ve a la página Temas de Pub/Sub >.
En la lista de temas, haz clic en el nombre de tu tema de Pub/Sub.
Haz clic en Mensajes.
Haz clic en Publicar mensajes.
En Cantidad de mensajes, ingresa
10.En Cuerpo del mensaje, ingresa
{"name": "Alice", "customer_id": 1}.Haz clic en Publicar.
gcloud
Para publicar mensajes en tu tema de Pub/Sub, usa el comando gcloud pubsub topics publish.
for run in {1..10}; do
gcloud pubsub topics publish TOPIC_ID --message='{"name": "Alice", "customer_id": 1}'
done
Reemplaza TOPIC_ID por el nombre de tu tema de Pub/Sub.
Ahora puedes consumir los mensajes del tema de Kafka. Para obtener más información, consulta Cómo producir y consumir mensajes con la CLI.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Console
Borra el tema de Pub/Sub.
Ve a la página Temas de Pub/Sub >.
Selecciona el tema y haz clic en Borrar.
Borra la suscripción a Pub/Sub.
Ve a la página Suscripciones de Pub/Sub >.
Selecciona la suscripción que se creó con tu tema y haz clic en Borrar.
Borra el clúster de Connect.
Ve a la página Connect Clusters de Managed Service para Apache Kafka >.
Selecciona el clúster de Connect y haz clic en Borrar.
Borra el clúster de Kafka.
Ve a la página Managed Service para Apache Kafka > Clústeres.
Selecciona el clúster de Kafka y haz clic en Borrar.
gcloud
Para borrar la suscripción y el tema de Pub/Sub, usa los comandos
gcloud pubsub subscriptions deleteygcloud pubsub topics delete.gcloud pubsub subscriptions delete SUBSCRIPTION_ID gcloud pubsub topics delete TOPIC_IDPara borrar el clúster de Connect, usa el comando
gcloud managed-kafka connect-clusters delete.gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \ --location=REGION --asyncPara borrar el clúster de Kafka, usa el comando
gcloud managed-kafka clusters delete.gcloud managed-kafka clusters delete KAFKA_CLUSTER \ --location=REGION --async
¿Qué sigue?
- Soluciona problemas de un conector de Pub/Sub.
- Obtén más información sobre el conector de fuente de Pub/Sub.
- Obtén más información sobre Kafka Connect.