Produire et consommer des messages avec les outils de ligne de commande Kafka
Découvrez comment utiliser les outils de ligne de commande Kafka pour vous connecter à un cluster Managed Service pour Apache Kafka, produire des messages et les consommer.
Avant de commencer
Avant de commencer ce tutoriel, créez un cluster Managed Service pour Apache Kafka. Si vous disposez déjà d'un cluster, vous pouvez ignorer cette étape.
Créer un cluster
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.
- Sous Network (Réseau), sélectionnez le réseau VPC.
- Pour Subnet (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
managed-kafka clusters
create commande.
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 la page 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
gcloud managed-kafka
operations describe commande :
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 la page
Surveiller l'opération de création du cluster.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer et configurer une VM cliente, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
- Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin) - Lecteur de rôles (
roles/iam.roleViewer) - Utilisateur du compte de service (
roles/iam.serviceAccountUser)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer une VM cliente
Créez une instance de machine virtuelle (VM) Linux dans Compute Engine qui peut accéder au cluster Kafka. Lorsque vous configurez la VM, définissez les options suivantes :
Région : créez la VM dans la même région que votre cluster Kafka.
Sous-réseau : créez la VM dans le même réseau VPC que le sous-réseau que vous avez utilisé dans la configuration de votre cluster Kafka. Pour en savoir plus, consultez la page Afficher les sous-réseaux d'un cluster.
Niveaux d'accès : attribuez le
https://www.googleapis.com/auth/cloud-platformniveau d'accès à la VM. Ce niveau autorise la VM à envoyer des requêtes à l'API Managed Kafka.
Les étapes suivantes montrent comment définir ces options.
Console
Accédez à la page Créer une instance dans la Google Cloud console.
Dans le volet Configuration de la machine, procédez comme suit :
Dans le champ Nom, spécifiez un nom pour votre instance. Pour en savoir plus, consultez Convention d'attribution de noms aux ressources.
Dans la liste Région, sélectionnez la même région que votre cluster Kafka.
Dans la liste Zone, sélectionnez une zone.
Dans le menu de navigation, cliquez sur Mise en réseau. Dans le volet Mise en réseau qui s'affiche, procédez comme suit :
Accédez à la section Interfaces réseau.
Pour développer l'interface réseau par défaut, cliquez sur la flèche.
Dans le champ Réseau, sélectionnez le réseau VPC.
Dans la liste Sous-réseau, sélectionnez le sous-réseau.
Cliquez sur OK.
Dans le menu de navigation, cliquez sur Sécurité. Dans le volet Sécurité qui s'affiche, procédez comme suit :
Pour Niveaux d'accès, sélectionnez Définir l'accès pour chaque API.
Dans la liste des niveaux d'accès, recherchez la liste déroulante Cloud Platform et sélectionnez Activé.
Cliquez sur Créer pour créer la VM.
gcloud
Pour créer l'instance de VM, utilisez la
gcloud compute instances create
commande.
gcloud compute instances create VM_NAME \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET \
--zone=ZONE
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- PROJECT_ID : ID de votre projet
- REGION : région dans laquelle vous avez créé le cluster Kafka, par exemple
us-central1 - SUBNET : sous-réseau dans le même réseau VPC que le sous-réseau que vous avez utilisé dans la configuration du cluster
- ZONE : zone dans la région où vous avez créé le
cluster, par exemple
us-central1-c
Pour en savoir plus sur la création d'une VM, consultez la page Créer une instance de VM dans un sous-réseau spécifique.
Accorder des rôles IAM
Attribuez les rôles IAM (Identity and Access Management) suivants au compte de service Compute Engine par défaut :
- Client Managed Kafka (
roles/managedkafka.client) - Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator) Créateur de jetons OpenID du compte de service (
roles/iam.serviceAccountOpenIdTokenCreator)
Console
Dans la console Google Cloud , accédez à la page IAM.
Recherchez la ligne Compte de service Compute Engine par défaut , puis cliquez sur Modifier le compte principal.
Cliquez sur Ajouter un autre rôle , puis sélectionnez le rôle Client Managed Kafka. Répétez cette étape pour les rôles Créateur de jetons du compte de service et Créateur de jetons OpenID du compte de service.
Cliquez sur Enregistrer.
gcloud
Pour accorder des rôles IAM, utilisez la
gcloud projects add-iam-policy-binding
commande.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role=roles/managedkafka.client
gcloud projects add-iam-policy-binding PROJECT_ID\
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role=roles/iam.serviceAccountTokenCreator
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role=roles/iam.serviceAccountOpenIdTokenCreator
Remplacez les éléments suivants :
PROJECT_ID : ID de votre projet
PROJECT_NUMBER : numéro de votre projet
Pour obtenir le numéro de projet, exécutez la
gcloud projects describe commande :
gcloud projects describe PROJECT_ID
Pour en savoir plus, consultez la page Trouver le nom, le numéro et l'ID du projet.
Se connecter à la VM
Utilisez SSH pour vous connecter à l'instance de VM.
Console
Accédez à la page Instances de VM.
Dans la liste des instances de VM, recherchez le nom de la VM, puis cliquez sur SSH.
gcloud
Pour vous connecter à la VM, utilisez la
gcloud compute ssh commande.
gcloud compute ssh VM_NAME \
--project=PROJECT_ID \
--zone=ZONE
Remplacez les éléments suivants :
- VM_NAME : nom de la VM
- PROJECT_ID : ID de votre projet
- ZONE : zone dans laquelle vous avez créé la VM
Une configuration supplémentaire peut être requise lors de la première utilisation de SSH. Pour en savoir plus, consultez la section À propos des connexions SSH.
Installer les outils de ligne de commande Kafka
À partir de votre session SSH, exécutez les commandes suivantes pour installer les outils de ligne de commande Kafka.
Installez Java, qui est nécessaire pour exécuter les outils de ligne de commande Kafka, et
wgetpour télécharger les dépendances. Les commandes suivantes supposent que vous utilisez un environnement Debian Linux.sudo apt-get install default-jre wgetInstallez les outils de ligne de commande Kafka.
wget -O kafka_2.13-3.7.2.tgz https://archive.apache.org/dist/kafka/3.7.2/kafka_2.13-3.7.2.tgz tar xfz kafka_2.13-3.7.2.tgzDéfinissez les variables d'environnement suivantes :
export KAFKA_HOME=$(pwd)/kafka_2.13-3.7.2 export PATH=$PATH:$KAFKA_HOME/bin export CLASSPATH=$CLASSPATH:$KAFKA_HOME/libs/release-and-dependencies/*:$KAFKA_HOME/libs/release-and-dependencies/dependency/*
Configurer l'authentification
À partir de votre session SSH, procédez comme suit pour configurer la bibliothèque d'authentification Managed Service pour Apache Kafka.
Téléchargez la bibliothèque et installez-la en local.
wget https://github.com/googleapis/managedkafka/releases/download/v1.0.5/release-and-dependencies.zip sudo apt-get install unzip unzip -n -j release-and-dependencies.zip -d $KAFKA_HOME/libs/Cette commande installe la bibliothèque dans le répertoire
libdu répertoire d'installation Kafka. Les outils de ligne de commande Kafka recherchent les dépendances Java dans ce répertoire.À l'aide d'un éditeur de texte, créez un fichier nommé
client.propertieset collez-y le code suivant :security.protocol=SASL_SSL sasl.mechanism=OAUTHBEARER sasl.login.callback.handler.class=com.google.cloud.hosted.kafka.auth.GcpLoginCallbackHandler sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;Enregistrez le fichier. Ce fichier configure un client Kafka avec les paramètres suivants :
Utilisez SASL_SSL pour une communication sécurisée avec le cluster Kafka.
Utilisez des jetons porteurs OAuth 2.0 pour l'authentification.
Utilisez la classe fournie par la bibliothèque
GcpLoginCallbackHandlercomme gestionnaire de rappel de connexion pour obtenir des jetons OAuth 2.0.
Produire et consommer des messages
À partir de votre session SSH, exécutez les commandes suivantes pour produire et consommer des messages Kafka.
Définissez l'adresse d'amorçage en tant que variable d'environnement.
export BOOTSTRAP=bootstrap.CLUSTER_ID.REGION.managedkafka.PROJECT_ID.cloud.goog:9092Remplacez les éléments suivants :
CLUSTER_ID: nom de votre clusterREGION: emplacement où vous avez créé le clusterPROJECT_ID: ID de votre projet
Pour en savoir plus, consultez la page Obtenir l'adresse d'amorçage.
Affichez la liste des sujets du cluster.
kafka-topics.sh --list \ --bootstrap-server $BOOTSTRAP \ --command-config client.propertiesÉcrivez un message dans un sujet.
echo "hello world" | kafka-console-producer.sh \ --topic KAFKA_TOPIC_NAME \ --bootstrap-server $BOOTSTRAP \ --producer.config client.propertiesRemplacez KAFKA_TOPIC_NAME par le nom du sujet.
Consommez les messages du sujet.
kafka-console-consumer.sh \ --topic KAFKA_TOPIC_NAME \ --from-beginning \ --bootstrap-server $BOOTSTRAP \ --consumer.config client.propertiesPour arrêter la consommation de messages, appuyez sur Ctrl+C.
Exécutez un test de performances du producteur.
kafka-producer-perf-test.sh \ --topic KAFKA_TOPIC_NAME \ --num-records 1000000 --throughput 1000 --print-metrics --record-size 1024 \ --producer-props bootstrap.servers=$BOOTSTRAP \ --producer.config client.properties
Libérer de l'espace
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, procédez comme suit :
Console
Supprimez l'instance de VM.
Accédez à la page Instances de VM.
Sélectionnez la VM, 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 la VM, utilisez la
gcloud compute instances deletecommande.gcloud compute instances delete VM_NAME --zone=ZONEPour supprimer le cluster Kafka, utilisez la
gcloud managed-kafka clusters deletecommande.gcloud managed-kafka clusters delete CLUSTER_ID \ --location=REGION --async
Étape suivante
- Présentation de Managed Service pour Apache Kafka
- S'authentifier auprès de Managed Service pour Apache Kafka
- Configurer la mise en réseau