IBM Cloud Docs
Utilisation de l'API Kafka

Utilisation de l'API Kafka

Kafka fournit un ensemble enrichi d'interfaces API et de clients dans un large éventail de langues. Les API incluent l'API de base, l'API Streams et l'API Connect.

  • Kafka (Consumer, Producer et Admin API)
    Permet d'envoyer et de recevoir des messages directement depuis une ou plusieurs rubriques Kafka. Le client d'administration Kafka fournit une interface simple via l'API Kafka pour gérer les ressources Kafka. Vous pouvez créer, supprimer et gérer des rubriques. Vous pouvez également utiliser le client d'administration pour gérer les groupes de consommateurs et leurs configurations.
  • API de flux
    Une API de traitement des flux de haut niveau pour consommer, transformer et produire facilement des événements entre les sujets.
  • Connecter l'API
    Un cadre qui permet des intégrations réutilisables ou standard pour diffuser des événements vers et depuis des systèmes externes, tels que des bases de données.

Le tableau suivant récapitule ce que vous pouvez utiliser avec Event Streams :

Kafka pour le support client dans les plans Standard, Enterprise et Lite.
Plan Enterprise plan Standard Plan Lite
Version Kafka sur le cluster Kafka 3.6 Kafka 3.6 Kafka 3.6
Version minimale recommandée du client Kafka Kafka 2.6.0 ou plus tard Kafka 2.6.0 ou plus tard Kafka 2.6.0 ou plus tard
Versions du client prises en charge Voir Récapitulatif du support pour tous les clients recommandés
Kafka Connect pris en charge Oui Oui Non
Kafka Streams pris en charge Oui Oui Non
ksqlDB pris en charge Oui Non Non
Conditions requises pour l'authentification Le client doit prendre en charge l'authentification à l'aide du mécanisme SASL Plain et utiliser l'extension Server Name Indication (SNI) du protocole TLSv1.2. Le client doit prendre en charge l'authentification à l'aide du mécanisme SASL Plain et utiliser l'extension Server Name Indication (SNI) du protocole TLSv1.2. Le client doit prendre en charge l'authentification à l'aide du mécanisme SASL Plain et utiliser l'extension Server Name Indication (SNI) du protocole TLSv1.2.

Choix d'un client Kafka pour une utilisation avec Event Streams

Le client officiel de l'API Kafka, qui est écrit en Java, contient les dernières fonctionnalités et les correctifs de bogue. Pour plus d'informations sur cette API, voir Kafka Producer API 3.6 et Kafka Consumer API 3.6.

Pour les autres langues, exécutez l'un des clients suivants, qui sont tous testés avec Event Streams.

Récapitulatif de la prise en charge de tous les clients recommandés

Résumé de l'assistance aux clients
Client Langue Version recommandée Version min. prise en charge [1] Lien vers un exemple
Client officiel Apache Kafka :
Client Apache Kafka Java 3.6.2ou version ultérieure 2.5.0 Exemple de console Java

Liberty

Clients de tiers :
confluent-kafka-javascript Node.js Le plus récent 1.0.0
confluent-kafka-python Python Le plus récent 1.4.0 Exemple Kafka Python
confluent-kafka-go Go Le plus récent 1.4.0
librdkafka C ou C++ Le plus récent 1.4.0
node-rdkafka Node.js Le plus récent 2.8.0 ExempleNode.js
sarama Go Le plus récent 1.40.0 Exemples Sarama

Connexion de votre client à Event Streams

Pour savoir comment configurer votre client Java pour se connecter à Event Streams, voir Configuration de votre client.

Configuration de votre client API Kafka

Pour établir une connexion, les clients doivent être configurés pour utiliser au minimum SASL PLAIN ou SASL OAUTHBEARER sur TLSv1.2 et pour demander un nom d'utilisateur et une liste des serveurs d'amorçage. TLSv1.2 garantit que les connexions sont cryptées et valide l'authenticité des courtiers (pour éviter les attaques de type "man-in-the-middle"). SASL applique l'authentification pour toutes les connexions.

Pour récupérer le nom d'utilisateur, le mot de passe et la liste des serveurs d'amorçage, un objet d'identification de service ou une clé de service est nécessaire pour l'instance de service. Pour plus d'informations sur la création de ces objets, voir Connexion à Event Streams.

Utilisation de SASL PLAIN

Utilisez les chaînes et propriétés suivantes.

  • Utilisez la chaîne bootstrap_endpoints comme liste de serveurs d'amorçage et transmettez cette chaîne de paires hôte-port à votre client Kafka.
  • Utilisez les propriétés user et api_key comme nom d'utilisateur et mot de passe.

Pour un client Java, l'exemple suivant montre l'ensemble minimal de propriétés, où ${USERNAME}, ${PASSWORD}, et ${BOOTSTRAP_ENDPOINTS} doivent être remplacés par les valeurs que vous avez récupérées précédemment.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="${USERNAME}" password="${PASSWORD}";
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

Si vous utilisez un client Kafka antérieur à la version 0.10.2.1, la propriété sasl.jaas.config n'est pas prise en charge et vous devez fournir la configuration du client dans un fichier de configuration JAAS.

Utilisation de SASL OAUTHBEARER

Avant de configurer le mécanisme SASL pour le client Java, deux conditions sont requises.

  • La version minimale du client Kafka Java prise en charge est 3.1.0.
  • Un package jar supplémentaire doit être téléchargé à partir de Maven Central et mis à disposition dans le chemin d'accès aux classes.

Si Maven est utilisé dans le système de génération, ajoutez les informations suivantes au fichier pom.xml dans la section des dépendances.

<dependency>
    <groupId>com.ibm.cloud.eventstreams</groupId>
    <artifactId>oauth-client</artifactId>
    <version>1.3.1</version>
</dependency>

Si Gradle est utilisé dans le système de génération, ajoutez les informations suivantes au fichier build.gradle dans la section des dépendances.

implementation com.ibm.cloud.eventstreams:oauth-client:1.3.1

Utilisez les chaînes et propriétés suivantes.

  • Utilisez la chaîne bootstrap_endpoints comme liste de serveurs d'amorçage et transmettez cette chaîne de paires hôte-port à votre client Kafka.
  • Utilisez la chaîne api_key comme clé d'API.
  • Le fichier IAMOAuthBearerLoginCallbackHandler est fourni par le package jar com.ibm.cloud.eventstreams:oauth-client:+.
  • Le IBM Cloud® Identity and Access Management https://iam.cloud.ibm.com/identity/token est configuré pour générer un jeton à partir de la clé d'API à l'aide du type d'octroi spécifié dans la configuration jaas. Elle est effectuée côté client, de sorte que la clé d'API n'est jamais envoyée côté serveur et offre une meilleure sécurité qu'une clé d'API à durée de vie longue.
  • Le noeud final de clé Cloud Identity and Access Management https://iam.cloud.ibm.com/identity/keys est configuré pour valider le jeton.

Pour un client Java, l'exemple suivant montre l'ensemble minimal de propriétés, où ${BOOTSTRAP_ENDPOINTS} et ${APIKEY} doivent être remplacés par les valeurs que vous avez récupérées précédemment.

bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:apikey" apikey="${APIKEY}";
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

L'exemple de code fait référence aux exemplesEvent Streams.

Pour d'autres bibliothèques client Kafka, consultez leur documentation sur l'implémentation de la prise en charge d'OAUTHBEARER. Par exemple:.

  • sarama: une implémentation de l'interface AccessTokenProvider est requise.
  • librdkafka: une implémentation du rappel oauthbearer_token_refresh_cb est requise.

Pour plus d'informations sur la génération d'un jeton IBM Cloud IAM à l'aide d'une clé d'API, voir IBM Cloud® Identity and Access Management document.


  1. La version la plus ancienne qui a été validée par des tests continus. Il s'agit généralement de la version initiale disponible au cours des 12 derniers mois, ou d'une version plus récente si des problèmes importants sont connus. Si vous ne pouvez pas exécuter l'un des clients répertoriés, vous pouvez utiliser d'autres clients tiers qui répondent aux exigences minimales suivantes (par exemple, librdkafka ). 1. Prend en charge Kafka 1.40ou version ultérieure. 2. Peut se connecter et s'authentifier en utilisant SASL PLAIN avec TLSv1.2. 3. Supporte les extensions SNI pour TLS où le nom d'hôte du serveur est inclus dans la poignée de main TLS. 4. Prend en charge la cryptographie de courbe elliptique. Dans tous les cas, utilisez la dernière version du client. ↩︎