Ce tutoriel explique comment ingérer des messages depuis Pub/Sub dans votre cluster Managed Service pour Apache Kafka à l'aide de Kafka Connect.
Kafka Connect gère le transfert de données entre votre cluster Kafka et d'autres systèmes. Dans ce tutoriel, vous allez créer un cluster Connect et un connecteur source Pub/Sub. Le connecteur source Pub/Sub lit les messages de votre sujet Pub/Sub et les écrit dans un sujet Kafka.
Avant de commencer
Console
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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.-
Assurez-vous de disposer du ou des rôles suivants sur le projet : Éditeur de cluster Managed Kafka, Éditeur de cluster Managed Kafka Connect, Éditeur de connecteur Managed Kafka, Éditeur de sujet Managed Kafka, Éditeur Pub/Sub
Vérifier les rôles
-
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
-
Dans la colonne Compte principal, recherchez toutes les lignes qui vous identifient ou identifient un groupe dont vous faites partie. Pour savoir à quels groupes vous appartenez, contactez votre administrateur.
- Pour toutes les lignes qui vous spécifient ou vous incluent, consultez la colonne Rôle pour vous assurer que la liste inclut les rôles requis.
Attribuer les rôles
-
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
-
gcloud
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API Managed Kafka :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable managedkafka.googleapis.com
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API Managed Kafka :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable managedkafka.googleapis.com
-
Attribuez des rôles à votre compte utilisateur. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projetUSER_IDENTIFIER: identifiant de votre compte d'utilisateur. Par exemple,myemail@example.com.ROLE: rôle IAM que vous accordez à votre compte utilisateur.
Créer un sujet et un abonnement Pub/Sub
Dans cette étape, vous allez créer un sujet Pub/Sub avec un abonnement.
Console
Accédez à la page Pub/Sub > Sujets.
Cliquez sur Créer un sujet.
Dans le champ ID du sujet, saisissez un nom pour le sujet.
Assurez-vous que la case Ajouter un abonnement par défaut est cochée.
Cliquez sur Créer.
gcloud
Pour créer un sujet Pub/Sub, exécutez la commande
gcloud pubsub topics create.gcloud pubsub topics create TOPIC_IDRemplacez
TOPIC_IDpar le nom de votre sujet Pub/Sub.Pour créer un abonnement associé à votre sujet, exécutez la commande
gcloud pubsub subscriptions create:gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_IDRemplacez
SUBSCRIPTION_IDpar le nom de votre abonnement Pub/Sub.
Pour savoir comment nommer des sujets et des abonnements Pub/Sub, consultez Consignes de dénomination d'un sujet ou d'un abonnement.
Créer des ressources Managed Service pour Apache Kafka
Dans cette section, vous allez créer les ressources Managed Service pour Apache Kafka suivantes :
- Un cluster Kafka avec un sujet.
- Un cluster Connect avec un connecteur Pub/Sub.
Créer un cluster Kafka
Au cours de cette étape, vous allez créer un cluster Managed Service pour Apache Kafka. La création d'un cluster peut prendre jusqu'à 30 minutes.
Console
- Accédez à la page Managed Service pour Apache Kafka > Clusters.
- Cliquez sur Créer.
- Dans le champ Nom du cluster, saisissez un nom pour le cluster.
- Dans la liste Région, sélectionnez un emplacement pour le cluster.
-
Pour Configuration réseau, configurez le sous-réseau où le cluster est accessible :
- Pour Project (Projet), sélectionnez votre projet.
- Pour Réseau, sélectionnez le réseau VPC.
- Pour Sous-réseau, sélectionnez le sous-réseau.
- Cliquez sur OK.
- Cliquez sur Créer.
Une fois que vous avez cliqué sur Créer, l'état du cluster est Creating. Lorsque le cluster est prêt, l'état est Active.
gcloud
Pour créer un cluster Kafka, exécutez la commande 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
Remplacez les éléments suivants :
KAFKA_CLUSTER: nom du cluster KafkaREGION: emplacement du clusterPROJECT_ID: ID de votre projetSUBNET_NAME: sous-réseau dans lequel vous souhaitez créer le cluster, par exempledefault
Pour en savoir plus sur les emplacements compatibles, consultez Emplacements Managed Service pour Apache Kafka.
La commande s'exécute de manière asynchrone et renvoie un ID d'opération :
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Pour suivre la progression de l'opération de création, utilisez la commande gcloud managed-kafka
operations describe :
gcloud managed-kafka operations describe OPERATION_ID \ --location=REGION
Lorsque le cluster est prêt, le résultat de cette commande inclut l'entrée state:
ACTIVE. Pour en savoir plus, consultez Surveiller l'opération de création de cluster.
Créer un sujet Kafka
Une fois le cluster Managed Service pour Apache Kafka créé, créez un sujet Kafka.
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur le nom du cluster.
Sur la page "Détails du cluster", cliquez sur Créer un sujet.
Dans le champ Nom du thème, saisissez un nom pour le thème.
Cliquez sur Créer.
gcloud
Pour créer un sujet Kafka, exécutez la commande managed-kafka topics create.
gcloud managed-kafka topics create KAFKA_TOPIC_NAME \
--cluster=KAFKA_CLUSTER \
--location=REGION \
--partitions=10 \
--replication-factor=3
Remplacez les éléments suivants :
KAFKA_TOPIC_NAME: nom du sujet Kafka à créerKAFKA_CLUSTER: nom du cluster KafkaREGION: région dans laquelle vous avez créé le cluster Kafka
Créer un cluster Connect
Au cours de cette étape, vous allez créer un cluster Connect. La création d'un cluster Connect peut prendre jusqu'à 30 minutes.
Avant de commencer cette étape, assurez-vous que le cluster Managed Service for Apache Kafka est entièrement créé.
Console
Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.
Cliquez sur Créer.
Dans le champ Nom du cluster Connect, saisissez une chaîne. Exemple :
my-connect-clusterPour Cluster Kafka principal, sélectionnez le cluster Kafka que vous avez créé précédemment.
Cliquez sur Créer.
Pendant la création du cluster, son état est Creating. Une fois le cluster créé, l'état est Active.
gcloud
Pour créer un cluster Connect, exécutez la commande 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
Remplacez les éléments suivants :
CONNECT_CLUSTER: nom du cluster ConnectREGION: région dans laquelle vous avez créé le cluster KafkaPROJECT_ID: ID de votre projetSUBNET_NAME: sous-réseau dans lequel vous avez créé le cluster KafkaKAFKA_CLUSTER: nom de votre cluster Kafka
La commande s'exécute de manière asynchrone et renvoie un ID d'opération :
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Pour suivre la progression de l'opération de création, utilisez la commande gcloud managed-kafka operations describe :
gcloud managed-kafka operations describe OPERATION_ID \
--location=REGION
Pour en savoir plus, consultez Surveiller l'opération de création du cluster.
Attribuer des rôles IAM
Attribuez les rôles IAM (Identity and Access Management) suivants au compte de service Managed Kafka :
- Abonné Pub/Sub
- Lecteur Pub/Sub
Ces rôles permettent aux connecteurs de lire les messages Pub/Sub.
Console
Dans la console Google Cloud , accédez à la page IAM.
Sélectionnez Inclure les attributions de rôles fournies par Google.
Recherchez la ligne Compte de service Kafka géré, puis cliquez sur Modifier le compte principal.
Cliquez sur Ajouter un autre rôle, puis sélectionnez le rôle Abonné Pub/Sub. Répétez cette étape pour le rôle Lecteur Pub/Sub.
Cliquez sur Enregistrer.
Pour en savoir plus sur l'attribution de rôles, consultez la page Attribuer un rôle IAM à l'aide de la console.
gcloud
Pour accorder des rôles IAM au compte de service, exécutez la commande 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
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projetPROJECT_NUMBER: votre numéro de projet
Pour trouver votre numéro de projet, utilisez la commande gcloud projects describe.
Créer un connecteur source Pub/Sub
Au cours de cette étape, vous allez créer un connecteur source Pub/Sub. Ce connecteur lit les messages de Pub/Sub et les écrit dans un sujet Kafka.
Console
Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.
Cliquez sur le nom du cluster Connect.
Cliquez sur Créer un connecteur.
Saisissez une chaîne pour le nom du connecteur. Exemple :
pubsub-source.Dans la liste Plug-in de connecteur, sélectionnez
Pub/Sub Source.Pour Abonnement Cloud Pub/Sub, sélectionnez l'abonnement Pub/Sub par défaut qui a été créé lorsque vous avez créé le sujet Pub/Sub.
Pour Sujet Kafka, sélectionnez le sujet Kafka que vous avez créé précédemment.
Cliquez sur Créer.
gcloud
Pour créer un connecteur source Pub/Sub, exécutez la commande 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
Remplacez les éléments suivants :
PUBSUB_CONNECTOR_NAME: nom du connecteur, tel quepubsub-source-connectorCONNECT_CLUSTER: nom de votre cluster ConnectREGION: région dans laquelle vous avez créé le cluster ConnectPROJECT_ID: ID de votre projetKAFKA_TOPIC_NAME: nom de votre sujet KafkaSUBSCRIPTION_ID: nom de votre abonnement Pub/Sub
Afficher les résultats
Pour afficher les résultats, publiez des messages dans Pub/Sub.
Console
Dans la console Google Cloud , accédez à la page Pub/Sub > Sujets.
Dans la liste des sujets, cliquez sur le nom de votre sujet Pub/Sub.
Cliquez sur Messages.
Cliquez sur Publier des messages.
Dans le champ Nombre de messages, saisissez
10.Dans le champ Corps du message, saisissez
{"name": "Alice", "customer_id": 1}.Cliquez sur Publier.
gcloud
Pour publier des messages dans votre sujet Pub/Sub, utilisez la commande gcloud pubsub topics publish.
for run in {1..10}; do
gcloud pubsub topics publish TOPIC_ID --message='{"name": "Alice", "customer_id": 1}'
done
Remplacez TOPIC_ID par le nom de votre sujet Pub/Sub.
Vous pouvez maintenant consommer les messages du sujet Kafka. Pour en savoir plus, consultez Produire et consommer des messages avec la CLI.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Console
Supprimez le sujet Pub/Sub.
Accédez à la page Pub/Sub > Sujets.
Sélectionnez le thème, puis cliquez sur Supprimer.
Supprimez l'abonnement Pub/Sub.
Accédez à la page Pub/Sub > Abonnements.
Sélectionnez l'abonnement créé avec votre sujet, puis cliquez sur Supprimer.
Supprimez le cluster Connect.
Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.
Sélectionnez le cluster Connect, puis cliquez sur Supprimer.
Supprimez le cluster Kafka.
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Sélectionnez le cluster Kafka, puis cliquez sur Supprimer.
gcloud
Pour supprimer l'abonnement et le sujet Pub/Sub, utilisez les commandes
gcloud pubsub subscriptions deleteetgcloud pubsub topics delete.gcloud pubsub subscriptions delete SUBSCRIPTION_ID gcloud pubsub topics delete TOPIC_IDPour supprimer le cluster Connect, utilisez la commande
gcloud managed-kafka connect-clusters delete.gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \ --location=REGION --asyncPour supprimer le cluster Kafka, utilisez la commande
gcloud managed-kafka clusters delete.gcloud managed-kafka clusters delete KAFKA_CLUSTER \ --location=REGION --async
Étapes suivantes
- Résoudre les problèmes liés à un connecteur Pub/Sub
- En savoir plus sur le connecteur source Pub/Sub
- En savoir plus sur Kafka Connect