Répliquer des messages Pub/Sub vers Kafka

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

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. 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

    1. Dans la console Google Cloud , accédez à la page IAM.

      Accéder à IAM
    2. Sélectionnez le projet.
    3. 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.

    4. 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

    1. Dans la console Google Cloud , accédez à la page IAM.

      Accéder à IAM
    2. Sélectionnez le projet.
    3. Cliquez sur  Accorder l'accès.
    4. 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.

    5. Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
    6. Pour attribuer des rôles supplémentaires, cliquez sur  Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
    7. Cliquez sur Enregistrer.

gcloud

  1. 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.
  2. Installez la Google Cloud CLI.

  3. 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.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. 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'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par 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_ID par le nom de votre projet Google Cloud .

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  7. 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'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable managedkafka.googleapis.com
  8. Installez la Google Cloud CLI.

  9. 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.

  10. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  11. 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'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par 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_ID par le nom de votre projet Google Cloud .

  12. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  13. 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'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable managedkafka.googleapis.com
  14. 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.editor

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet
    • USER_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

  1. Accédez à la page Pub/Sub > Sujets.

    Accéder aux sujets

  2. Cliquez sur Créer un sujet.

  3. Dans le champ ID du sujet, saisissez un nom pour le sujet.

  4. Assurez-vous que la case Ajouter un abonnement par défaut est cochée.

  5. Cliquez sur Créer.

gcloud

  1. Pour créer un sujet Pub/Sub, exécutez la commande gcloud pubsub topics create.

    gcloud pubsub topics create TOPIC_ID
    

    Remplacez TOPIC_ID par le nom de votre sujet Pub/Sub.

  2. Pour créer un abonnement associé à votre sujet, exécutez la commande gcloud pubsub subscriptions create :

    gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID
    

    Remplacez SUBSCRIPTION_ID par 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

  1. Accédez à la page Managed Service pour Apache Kafka > Clusters.

    accéder aux clusters

  2. Cliquez sur Créer.
  3. Dans le champ Nom du cluster, saisissez un nom pour le cluster.
  4. Dans la liste Région, sélectionnez un emplacement pour le cluster.
  5. Pour Configuration réseau, configurez le sous-réseau où le cluster est accessible :
    1. Pour Project (Projet), sélectionnez votre projet.
    2. Pour Réseau, sélectionnez le réseau VPC.
    3. Pour Sous-réseau, sélectionnez le sous-réseau.
    4. Cliquez sur OK.
  6. 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 Kafka
  • REGION : emplacement du cluster
  • PROJECT_ID : ID de votre projet
  • SUBNET_NAME : sous-réseau dans lequel vous souhaitez créer le cluster, par exemple default

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

  1. Accédez à la page Managed Service pour Apache Kafka > Clusters.

    accéder aux clusters

  2. Cliquez sur le nom du cluster.

  3. Sur la page "Détails du cluster", cliquez sur Créer un sujet.

  4. Dans le champ Nom du thème, saisissez un nom pour le thème.

  5. 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éer
  • KAFKA_CLUSTER : nom du cluster Kafka
  • REGION : 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

  1. Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.

    Accéder à Connect Clusters

  2. Cliquez sur Créer.

  3. Dans le champ Nom du cluster Connect, saisissez une chaîne. Exemple : my-connect-cluster

  4. Pour Cluster Kafka principal, sélectionnez le cluster Kafka que vous avez créé précédemment.

  5. 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 Connect
  • REGION : région dans laquelle vous avez créé le cluster Kafka
  • PROJECT_ID : ID de votre projet
  • SUBNET_NAME : sous-réseau dans lequel vous avez créé le cluster Kafka
  • KAFKA_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

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM

  2. Sélectionnez Inclure les attributions de rôles fournies par Google.

  3. Recherchez la ligne Compte de service Kafka géré, puis cliquez sur Modifier le compte principal.

  4. 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.

  5. 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 projet
  • PROJECT_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

  1. Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.

    Accéder à Connect Clusters

  2. Cliquez sur le nom du cluster Connect.

  3. Cliquez sur Créer un connecteur.

  4. Saisissez une chaîne pour le nom du connecteur. Exemple : pubsub-source.

  5. Dans la liste Plug-in de connecteur, sélectionnez Pub/Sub Source.

  6. 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.

  7. Pour Sujet Kafka, sélectionnez le sujet Kafka que vous avez créé précédemment.

  8. 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 que pubsub-source-connector
  • CONNECT_CLUSTER : nom de votre cluster Connect
  • REGION : région dans laquelle vous avez créé le cluster Connect
  • PROJECT_ID : ID de votre projet
  • KAFKA_TOPIC_NAME : nom de votre sujet Kafka
  • SUBSCRIPTION_ID : nom de votre abonnement Pub/Sub

Afficher les résultats

Pour afficher les résultats, publiez des messages dans Pub/Sub.

Console

  1. Dans la console Google Cloud , accédez à la page Pub/Sub > Sujets.

    Accéder aux sujets

  2. Dans la liste des sujets, cliquez sur le nom de votre sujet Pub/Sub.

  3. Cliquez sur Messages.

  4. Cliquez sur Publier des messages.

  5. Dans le champ Nombre de messages, saisissez 10.

  6. Dans le champ Corps du message, saisissez {"name": "Alice", "customer_id": 1}.

  7. 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

  1. Supprimez le sujet Pub/Sub.

    1. Accédez à la page Pub/Sub > Sujets.

      Accéder aux sujets

    2. Sélectionnez le thème, puis cliquez sur Supprimer.

  2. Supprimez l'abonnement Pub/Sub.

    1. Accédez à la page Pub/Sub > Abonnements.

      Accéder à "Abonnements"

    2. Sélectionnez l'abonnement créé avec votre sujet, puis cliquez sur Supprimer.

  3. Supprimez le cluster Connect.

    1. Accédez à la page Managed Service pour Apache Kafka > Connecter des clusters.

      Accéder à Connect Clusters

    2. Sélectionnez le cluster Connect, puis cliquez sur Supprimer.

  4. Supprimez le cluster Kafka.

    1. Accédez à la page Managed Service pour Apache Kafka > Clusters.

      accéder aux clusters

    2. Sélectionnez le cluster Kafka, puis cliquez sur Supprimer.

gcloud

  1. Pour supprimer l'abonnement et le sujet Pub/Sub, utilisez les commandes gcloud pubsub subscriptions delete et gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  2. Pour supprimer le cluster Connect, utilisez la commande gcloud managed-kafka connect-clusters delete.

    gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \
      --location=REGION --async
    
  3. Pour supprimer le cluster Kafka, utilisez la commande gcloud managed-kafka clusters delete.

    gcloud managed-kafka clusters delete KAFKA_CLUSTER \
      --location=REGION --async
    

Étapes suivantes