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 :
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
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 |
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
etapi_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 jarcom.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.
-
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. ↩︎