Sie können eine Google Cloud Managed Service for Apache Kafka-Nutzergruppe aktualisieren, um die Offsets für eine Liste von Themenpartitionen zu ändern. So können Sie steuern, welche Nachrichten die Consumer in der Gruppe erhalten.
Zum Aktualisieren einer Nutzergruppe können Sie die Google Cloud CLI, die Clientbibliothek, die Managed Kafka API oder die Open-Source-Apache Kafka APIs verwenden. Die Google Cloud Console wird für die Bearbeitung einer Nutzergruppe nicht unterstützt.
Hinweis
Bevor Sie eine Nutzergruppe aktualisieren, muss sie inaktiv sein.
Eine Nutzergruppe wird von Kafka automatisch gelöscht, wenn sie noch nie Nachrichten verarbeitet hat oder wenn das letzte bestätigte Offset nach offsets.retention.minutes abgelaufen ist.
Führen Sie die folgenden Schritte aus, bevor Sie eine Nutzergruppe aktualisieren:
Senden Sie einige Nachrichten an das Thema, aus dem Ihre Nutzergruppe Nachrichten liest.
Starten Sie Ihre Nutzergruppe, um einige Nachrichten zu verarbeiten.
Verhindern Sie, dass alle Ihre Consumer Nachrichten verarbeiten. Drücken Sie Strg+C, um einen Consumer zu beenden.
Weitere Informationen zum Senden und Verarbeiten von Nachrichten finden Sie unter Nachrichten mit den Kafka-Befehlszeilentools produzieren und verarbeiten.
Erforderliche Rollen und Berechtigungen zum Aktualisieren einer Nutzergruppe
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Managed Kafka Consumer Group Editor (roles/managedkafka.consumerGroupEditor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die
Sie zum Bearbeiten Ihrer Nutzergruppen benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Bearbeiten Ihrer Nutzergruppen erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Bearbeiten Ihrer Nutzergruppen erforderlich:
-
Nutzergruppen aktualisieren:
managedkafka.consumerGroups.update
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zur Rolle „Managed Kafka Consumer Group Editor“ finden Sie unter Vordefinierte Rollen für Managed Service for Apache Kafka.
Dienst-Agent LESEZUGRIFF gewähren
Um die Offsets der Nutzergruppe zu aktualisieren, benötigt der Dienst-Agent Zugriff auf den Vorgang „LESEN“ für die Ressourcen „Thema“ und „Nutzergruppe“. Dieser Zugriff wird mit Apache Kafka-ACLs konfiguriert.
Wenn Sie keine Apache Kafka-ACLs für die Nutzergruppe und das zugehörige Thema im Cluster konfiguriert haben, hat der Dienst-Agent impliziten Zugriff auf diese Ressourcen. Sie können diesen Abschnitt überspringen.
Wenn Apache Kafka-ACLs für die Nutzergruppe und das zugehörige Thema im Cluster konfiguriert sind, benötigt der Dienst-Agent expliziten ACL-Zugriff für den Vorgang „LESEN“ für beide Ressourcen. Fügen Sie dazu ACL-Einträge hinzu, die dem Dienst-Agent Zugriff auf den Vorgang „LESEN“ für die entsprechende Nutzergruppe und das entsprechende Thema gewähren. Gehen Sie so vor:
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init Führen Sie den
gcloud managed-kafka acls add-acl-entryBefehl aus:gcloud managed-kafka acls add-acl-entry CONSUMER_GROUP_ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --principal=User:__AUTH_TOKEN__service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \ --operation=READ --permission-type=ALLOW --host=* gcloud managed-kafka acls add-acl-entry TOPIC_ACL_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --principal=User:__AUTH_TOKEN__service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \ --operation=READ --permission-type=ALLOW --host=*
Ersetzen Sie Folgendes:
CONSUMER_GROUP_ACL_ID(erforderlich): die eindeutige ID der Managed Service for Apache Kafka-ACL-Ressource, der Sie den ACL-Eintrag für die Nutzergruppe hinzufügen möchten. Wenn Sie den Zugriff auf alle Nutzergruppen anwenden möchten, verwenden Sie `allConsumerGroups`. Für eine bestimmte Nutzergruppe verwenden Sie `consumerGroup/CONSUMER_GROUP_NAME`.TOPIC_ACL_ID(erforderlich): die eindeutige ID der Managed Service for Apache Kafka-ACL-Ressource, der Sie den ACL-Eintrag für das Thema hinzufügen möchten. Wenn Sie den Zugriff auf alle Themen anwenden möchten, verwenden Sie `allTopics`. Für ein bestimmtes Thema verwenden Sie `topic/TOPIC_NAME`.CLUSTER_ID(erforderlich): die ID des Clusters der die ACL-Ressource enthält.LOCATION(erforderlich): die Region, in der sich der Cluster befindet. Weitere Informationen finden Sie unter Unterstützte Standorte.PROJECT_NUMBER(erforderlich): die Projektnummer des Projekts, in dem sich der Cluster befindet. Diese wird verwendet, um den Prinzipal namen des Dienst-Agents für den ACL-Eintrag zu erstellen.
Weitere Informationen zum Hinzufügen eines ACL-Eintrags finden Sie unter ACL-Eintrag hinzufügen.
Nutzergruppe aktualisieren
Achten Sie darauf, dass Sie die Schritte im Abschnitt Hinweis ausgeführt haben.
So aktualisieren Sie eine Nutzergruppe:
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell Sitzung gestartet und eine Befehlszeilenaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie den
gcloud managed-kafka consumer-groups updateBefehl aus:gcloud managed-kafka consumer-groups update CONSUMER_GROUP_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --topics-file=TOPICS_FILE
Ersetzen Sie Folgendes:
-
CLUSTER_ID: Die ID oder der Name des Clusters.
-
LOCATION: Der Standort des Clusters.
-
CONSUMER_GROUP_ID: Die ID oder der Name der Nutzergruppe.
-
TOPICS_FILE: Diese Einstellung gibt den Speicherort der Datei an, die die Konfiguration der Themen enthält, die für die Nutzergruppe aktualisiert werden sollen. Die Datei kann im JSON- oder YAML-Format vorliegen. Es kann sich um einen Dateipfad handeln oder den JSON- oder YAML-Inhalt direkt enthalten.
Die Themendatei verwendet eine JSON-Struktur, um eine
ConsumerGroup-Themenzuordnung darzustellen, in der Form{ topicName1: {ConsumerPartitionMetadata}, topicName2:{ConsumerPartitionMetadata}}.ConsumerPartitionMetadataenthält für jedes Thema das Offset und die Metadaten für jede Partition.Wenn Sie das Offset für eine einzelne Partition (Partition 0) in einem Thema mit dem Namen
topic1auf 10 festlegen möchten, sieht die JSON-Konfiguration so aus:{"topic1": {"partitions": { 0 : { "offset": 10, "metadata": ""}}}}Im Folgenden sehen Sie ein Beispiel für den Inhalt einer
topics.json-Datei:{ "projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME/TOPICS/TOPIC_NAME": { "partitions": { "1": { "offset": "1", "metadata": "metadata" }, "2": { "offset": "1", "metadata": "metadata" } } }, "projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME/TOPICS/OTHER_TOPIC_NAME": { "partitions": { "1": { "offset": "1", "metadata": "metadata" } } } }
-
TOPIC_PATH: Wenn Sie Themen in einer JSON- oder YAML-Datei angeben, fügen Sie den vollständigen Themenpfad ein. Sie erhalten ihn, indem Sie den
gcloud managed-kafak topics describeBefehl ausführen. Er hat das Formatprojects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_ID/topics/topic. .
-