Kafka-API verwenden
Mit Kafka steht eine umfassende Palette von APIs und Clients für eine Vielzahl verschiedener Sprachen zur Verfügung. APIs umfassen die Kern-API, die Streams-API und die Connect-API.
- Kafka kern-API (Consumer-, Producer- und Admin-API)
Zum Senden und Empfangen von Nachrichten direkt von einem oder mehreren Kafka-Topics. Der Kafka-Admin-Client stellt über die Kafka-API eine einfache Schnittstelle zur Verwaltung von Kafka-Ressourcen bereit. Sie können Themen erstellen, löschen und verwalten. Darüber hinaus kann der Admin-Client zum Verwalten von Consumergruppen und Konfigurationen verwendet werden. - Streams-API
Eine API für die Stream-Verarbeitung auf höherer Ebene zum einfachen Konsumieren, Umwandeln und Erzeugen von Ereignissen zwischen Themen. - API verbinden
Ein Framework, das wiederverwendbare oder Standardintegrationen ermöglicht, um Ereignisse in und aus externen Systemen, wie z. B. Datenbanken, zu streamen.
Die folgende Tabelle enthält eine Zusammenfassung der Verwendungsmöglichkeiten mit Event Streams:
| Enterprise-Plan | Standard-Plan | Lite-Plan | |
|---|---|---|---|
| Kafka-Version in Cluster | Kafka 3.8 | Kafka 3.8 | Kafka 3.8 |
| Empfohlene Mindestversion des Kafka-Clients | Kafka 2.6.0, oder später | Kafka 2.6.0, oder später | Kafka 2.6.0, oder später |
| Unterstützte Clientversionen | Siehe Support-Zusammenfassung für alle empfohlenen Clients. | ||
| Kafka Connect unterstützt | Ja | Ja | Nein |
| Kafka Streams unterstützt | Ja | Ja | Nein |
| ksqlDB unterstützt | Ja | Nein | Nein |
| Authentifizierungsanforderungen | Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden. | Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden. | Der Client muss die Authentifizierung mit dem SASL-Plain-Mechanismus unterstützen und die SNI-Erweiterung (Server Name Indication) des TLSv1.2-Protokolls verwenden. |
Kafka-Client zur Verwendung mit Event Streams auswählen
Der offizielle Client für die Kafka-API ist in Java geschrieben und enthält die neuesten Features und Fehlerkorrekturen. Weitere Informationen zu dieser API finden Sie unter Kafka Producer API 3.8 und Kafka Consumer API 3.8.
Führen Sie für andere Sprachen einen der folgenden Clients aus, die alle mit Event Streamsgetestet wurden:
Zusammenfassung der Unterstützung für alle empfohlenen Clients
| Kunde | Sprache | Empfohlene Version | Unterstützte Mindestversion [1] | Link zum Beispiel |
|---|---|---|---|---|
| Offizieller Apache Kafka -Client: | ||||
| Apache Kafka-Client | Java | 3.8.1, oder später | 2.5.0 | Beispiel für Java-Konsole |
| Clients anderer Anbieter: | ||||
| konfluent-kafka-javascript | Node.js | Neueste | 1.0.0 | |
| confluent-kafka-python | Python | Neueste | 1.4.0 | Kafka Python-Beispiel |
| confluent-kafka-go | Los | Neueste | 1.4.0 | |
| librdkafka | C oder C++ | Neueste | 1.4.0 | |
| node-rdkafka | Node.js | Neueste | 2.8.0 | Node.js-Beispiel |
| SaramaCity in Japan | Los | Neueste | 1.40.0 | Sarama-Beispiele |
Clients mit Event Streams verbinden
Informationen zur Konfiguration des Java-Clients für die Verbindung mit Event Streams finden Sie in Client konfigurieren.
Kafka-API-Client konfigurieren
Um eine Verbindung herzustellen, müssen die Clients so konfiguriert sein, dass sie mindestens SASL PLAIN oder SASL OAUTHBEARER über TLSv1.2 verwenden und einen Benutzernamen sowie eine Liste der Bootstrap-Server benötigen. TLSv1.2 stellt sicher, dass die Verbindungen verschlüsselt werden, und überprüft die Authentizität der Makler (um Man-in-the-Middle-Angriffe zu verhindern). SASL erzwingt die Authentifizierung für alle Verbindungen.
Um den Benutzernamen, das Kennwort und die Liste der Bootstrap-Server abzurufen, ist ein Dienstanmeldungsobjekt oder ein Dienstschlüssel für die Dienstinstanz erforderlich. Weitere Informationen zum Erstellen dieser Objekte finden Sie unter Verbindung zu Event Streams herstellen.
SASL PLAIN verwenden
Verwenden Sie die folgenden Zeichenfolgen und Eigenschaften:
- Verwenden Sie die Zeichenfolge
bootstrap_endpointsals Liste der Bootstrap-Server und übergeben Sie diese Zeichenfolge mit Host/Port-Paaren an Ihren Client Kafka. - Verwenden Sie die Eigenschaften
userundapi_keyals Benutzernamen und Kennwort.
Für einen Java-Client zeigt das folgende Beispiel den minimalen Satz von Eigenschaften, wobei ${USERNAME}, ${PASSWORD} und ${BOOTSTRAP_ENDPOINTS} durch die zuvor abgerufenen Werte zu ersetzen sind.
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
Wenn Sie einen Kafka-Client vor der Version 0.10.2.1 verwenden, wird die Eigenschaft sasl.jaas.config nicht unterstützt, und Sie müssen stattdessen die Client-Konfiguration in einer JAAS-Konfigurationsdatei angeben.
SASL OAUTHBEARER verwenden
Vor der Konfiguration des SASL-Mechanismus für den Java-Client gibt es zwei Voraussetzungen.
- Die Mindestversion des unterstützten Kafka Java-Clients ist 3.1.0.
- Zusätzliche JAR-Pakete müssen von Maven Central heruntergeladen und im Klassenpfad verfügbar gemacht werden.
Wenn Maven im Buildsystem verwendet wird, fügen Sie die folgenden Informationen zur Datei pom.xml im Abschnitt "dependencies" hinzu:
<dependency>
<groupId>com.ibm.cloud.eventstreams</groupId>
<artifactId>oauth-client</artifactId>
<version>1.4.0</version>
</dependency>
Wenn Gradle im Buildsystem verwendet wird, fügen Sie die folgenden Informationen zur Datei build.gradle im Abschnitt für Abhängigkeiten hinzu.
implementation com.ibm.cloud.eventstreams:oauth-client:1.4.0
IBM Cloud® Identity and Access Management Der Identity Service unterstützt mehrere Möglichkeiten zur Generierung von Überbringer-Token, von denen zwei von dieser Oauth-Client-Bibliothek unterstützt werden.
- API-Schlüssel.
- Vertrauenswürdiges Profil und Token für Rechenressourcen.
Verwendung von SASL OAUTHBEARER mit API-Schlüssel
Verwenden Sie die folgenden Zeichenfolgen und Eigenschaften:
- Verwenden Sie die Zeichenfolge
BOOTSTRAP_ENDPOINTSals Liste der Bootstrap-Server und übergeben Sie diese Zeichenfolge mit Host/Port-Paaren an Ihren Client Kafka. IAMOAuthBearerLoginCallbackHandlerwird vom JAR-Paketcom.ibm.cloud.eventstreams:oauth-client:+bereitgestellt.- Der IBM Cloud® Identity and Access Management
https://iam.cloud.ibm.com/identity/tokenist für die Generierung eines Tokens aus dem API-Schlüssel unter Verwendung des angegebenen Erteilungstyps in der jaas-Konfiguration konfiguriert. Dies geschieht auf der Clientseite, sodass der API-Schlüssel nie an die Serverseite gesendet wird und eine bessere Sicherheit bietet als ein langlebiger API-Schlüssel. - Der Cloud Identity and Access Management
https://iam.cloud.ibm.com/identity/keysist für die Validierung des Tokens konfiguriert. grant_typeinsasl.jaas.configisturn:ibm:params:oauth:grant-type:apikeyapikeyinsasl.jaas.configist der API-Schlüssel, der zur Generierung des Überbringer-Tokens auf der Client-Seite verwendet wird. Sie kann entweder von einer Benutzer- oder einer Dienst-ID stammen.
Für einen Java-Client zeigt das folgende Beispiel den minimalen Satz von Eigenschaften, wobei ${BOOTSTRAP_ENDPOINTS} und ${APIKEY} durch die zuvor abgerufenen Werte zu ersetzen sind.
bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:apikey" apikey="${APIKEY}";
Verwendung von SASL OAUTHBEARER mit vertrauenswürdigem Profil und Compute Resource Token
Alle Eigenschaften sind die gleichen wie beim API-Schlüssel, nur die sasl.jaas.config ist anders.
grant_typeinsasl.jaas.configisturn:ibm:params:oauth:grant-type:cr-token.profile_idinsasl.jaas.configist ein Dateispeicherort, der die vertrauenswürdige Profil-ID speichert. Diese Datei kann in einen Kubernetes-Pod mit Kafka-Clientcode als schreibgeschütztes Volume eingebunden und dem Kafka-Clientcode zur Verfügung gestellt werden.cr_tokeninsasl.jaas.configist ein Dateispeicherort, der Dienstkontotoken von einem Kubernetes-Pod speichert, auf dem Kafka-Clientcode ausgeführt wird. Siehe Was ist ein Dienstkonto-Token.
Siehe untenstehendes Beispiel
bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:cr-token" profile_id="${TRUSTED_PROFILE_ID_FILE_PATH}" cr_token="${SERVICE_ACCOUNT_TOKEN_FILE_PATH}";
Weitere Einzelheiten zur Einrichtung eines vertrauenswürdigen Profils
Der Quellcode des Oauth-Clients findet sich im Event Streams Java SDK.
Den Beispiel-Clientcode finden Sie unter Event Streams Sample.
Informationen zur Implementierung der Unterstützung für OAUTHBEARER für andere Kafka-Clients finden Sie in der zugehörigen Dokumentation. Beispiel:.
- sarama: Eine Implementierung der Schnittstelle
AccessTokenProviderist erforderlich. - librdkafka: Eine Implementierung des Callback
oauthbearer_token_refresh_cbist erforderlich.
Informationen zum Generieren eines IBM Cloud-IAM-Tokens unter Verwendung eines API-Schlüssels finden Sie im Dokument IBM Cloud® Identity and Access Management .
-
Die früheste Version, die in kontinuierlichen Tests validiert wurde. In der Regel handelt es sich dabei um die erste Version, die innerhalb der letzten 12 Monate verfügbar war, oder um eine neuere Version, wenn wesentliche Probleme bekannt sind. Wenn Sie keinen der aufgeführten Clients ausführen können, können Sie andere Clients von Drittanbietern verwenden, die die folgenden Mindestanforderungen erfüllen (z. B. librdkafka ). 1. Unterstützt Kafka 1.40oder höher. 2. Kann sich über SASL PLAIN mit TLSv1.2 verbinden und authentifizieren. 3. Unterstützt die SNI-Erweiterungen für TLS, bei denen der Hostname des Servers in den TLS-Handshake einbezogen wird. 4. Unterstützt Elliptic Curve Cryptography. Verwenden Sie in allen Fällen die neueste Version des Clients. ↩︎