Vous pouvez mettre à jour un groupe de consommateurs Google Cloud Managed Service pour Apache Kafka afin de modifier les décalages pour une liste de partitions de sujets. Cela vous permet de contrôler les messages que reçoivent les consommateurs du groupe.
Pour mettre à jour un groupe de consommateurs, vous pouvez utiliser la Google Cloud CLI, la bibliothèque cliente, l'API Managed Kafka ou les API Apache Kafka Open Source. La console Google Cloud n'est pas compatible avec la modification d'un groupe de consommateurs.
Avant de commencer
Pour mettre à jour un groupe de consommateurs, assurez-vous d'abord qu'il ne consomme pas activement de messages.
Un groupe de consommateurs est automatiquement supprimé par Kafka s'il n'a jamais consommé de messages ou lorsque le dernier décalage validé a expiré après offsets.retention.minutes.
Avant de mettre à jour un groupe de consommateurs, procédez comme suit :
Envoyez des messages au sujet à partir duquel votre groupe de consommateurs lit les messages.
Démarrez votre groupe de consommateurs pour traiter quelques messages.
Empêchez tous vos consommateurs de consommer des messages. Pour arrêter un consommateur, appuyez sur Ctrl+C.
Pour en savoir plus sur l'envoi et la consommation de messages, consultez Produire et consommer des messages avec les outils de ligne de commande Kafka.
Rôles et autorisations requis pour mettre à jour un groupe de consommateurs
Pour obtenir les autorisations nécessaires pour modifier vos groupes de consommateurs, demandez à votre administrateur de vous accorder le rôle IAM Éditeur de groupes de consommateurs Kafka gérés (roles/managedkafka.consumerGroupEditor) sur votre projet.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour modifier vos groupes de consommateurs. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour modifier vos groupes de consommateurs :
-
Mettez à jour les groupes de consommateurs :
managedkafka.consumerGroups.update
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur le rôle "Éditeur de groupes de consommateurs Kafka gérés", consultez Rôles prédéfinis de Managed Service pour Apache Kafka.
Accorder l'accès en lecture à l'agent de service
Pour mettre à jour les décalages du groupe de consommateurs, l'agent de service doit avoir accès à l'opération READ sur les ressources du thème et du groupe de consommateurs. Cet accès est configuré avec des LCA Apache Kafka.
Si vous n'avez configuré aucune LCA Apache Kafka pour le groupe de consommateurs et son sujet dans le cluster, l'agent de service dispose d'un accès ambiant à ces ressources. Vous pouvez ignorer cette section.
Si des LCA Apache Kafka sont configurées pour le groupe de consommateurs et son sujet dans le cluster, l'agent de service nécessite un accès LCA explicite pour l'opération READ pour les deux ressources. Pour ce faire, ajoutez des entrées de LCA accordant à l'agent de service l'accès à l'opération READ sur le groupe de consommateurs et le thème concernés. Procédez comme suit :
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init Exécutez la commande
gcloud managed-kafka acls add-acl-entry: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=*
Remplacez les éléments suivants :
CONSUMER_GROUP_ACL_ID(obligatoire) : ID unique de la ressource LCA Managed Service pour Apache Kafka à laquelle vous souhaitez ajouter l'entrée LCA pour le groupe de consommateurs. Pour appliquer l'accès à tous les groupes de consommateurs, utilisez `allConsumerGroups`. Pour un groupe de consommateurs spécifique, utilisez `consumerGroup/NOM_GROUPE_CONSOMMATEURS`.TOPIC_ACL_ID(obligatoire) : ID unique de la ressource LCA Managed Service pour Apache Kafka à laquelle vous souhaitez ajouter l'entrée LCA pour le sujet. Pour appliquer l'accès à tous les thèmes, utilisez `allTopics`. Pour un thème spécifique, utilisez `topic/TOPIC_NAME`.CLUSTER_ID(obligatoire) : ID du cluster contenant la ressource ACL.LOCATION(obligatoire) : région dans laquelle se trouve le cluster. Consultez les emplacements compatibles.PROJECT_NUMBER(obligatoire) : numéro du projet dans lequel se trouve le cluster. Il permet de créer le nom principal de l'agent de service pour l'entrée LCA.
Pour savoir comment ajouter une entrée de LCA, consultez Ajouter une entrée de LCA.
Mettre à jour un groupe de consommateurs
Assurez-vous d'avoir effectué les étapes de la section Avant de commencer.
Pour modifier un groupe de consommateurs, procédez comme suit :
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Exécutez la commande
gcloud managed-kafka consumer-groups update:gcloud managed-kafka consumer-groups update CONSUMER_GROUP_ID \ --cluster=CLUSTER_ID \ --location=LOCATION \ --topics-file=TOPICS_FILE
Remplacez les éléments suivants :
-
CLUSTER_ID : ID ou nom du cluster.
-
LOCATION : emplacement du cluster.
-
CONSUMER_GROUP_ID : ID ou nom du groupe de consommateurs.
-
TOPICS_FILE : ce paramètre spécifie l'emplacement du fichier contenant la configuration des thèmes à mettre à jour pour le groupe de consommateurs. Le fichier peut être au format JSON ou YAML. Il peut s'agir d'un chemin d'accès à un fichier ou d'un contenu JSON ou YAML directement inclus.
Le fichier de thème utilise une structure JSON pour représenter une carte des thèmes
ConsumerGroup, sous la forme{ topicName1: {ConsumerPartitionMetadata}, topicName2:{ConsumerPartitionMetadata}}. Pour chaque sujet,ConsumerPartitionMetadatafournit le décalage et les métadonnées de chaque partition.Pour définir le décalage d'une seule partition (partition 0) dans un sujet nommé
topic1sur 10, la configuration JSON se présente comme suit :{"topic1": {"partitions": { 0 : { "offset": 10, "metadata": ""}}}}Voici un exemple du contenu d'un fichier
topics.json:{ "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 : lorsque vous spécifiez des thèmes dans un fichier JSON ou YAML, incluez le chemin d'accès complet au thème, que vous pouvez obtenir en exécutant la commande
gcloud managed-kafak topics describeet qui est au formatprojects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_ID/topics/topic. .
-