Vous pouvez mettre à jour un groupe de consommateurs Google Cloud Managed Service pour Apache Kafka afin de modifier les décalages d'une liste de partitions de sujet. Cela vous permet de contrôler les messages que les consommateurs du groupe reçoivent.
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 Google Cloud console 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 Control+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 Managed Kafka (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 :
-
Mettre à jour des 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 Managed Kafka", consultez Rôles prédéfinis Managed Service pour Apache Kafka.
Accorder l'accès en lecture à l'agent de service
Pour mettre à jour les décalages des groupes de consommateurs, l'agent de service doit avoir accès à l'opération READ sur les ressources de sujet et de groupe de consommateurs. Cet accès est configuré avec les 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 sujet concernés. Procédez comme suit :
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init Exécutez la
gcloud managed-kafka acls add-acl-entrycommande :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 de 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/CONSUMER_GROUP_NAME`.TOPIC_ACL_ID(obligatoire) : ID unique de la ressource LCA Managed Service pour Apache Kafka à laquelle vous souhaitez ajouter l'entrée de LCA pour le sujet. Pour appliquer l'accès à tous les sujets, utilisez `allTopics`. Pour un sujet spécifique, utilisez `topic/TOPIC_NAME`.CLUSTER_ID(obligatoire) : ID du cluster contenant la ressource LCA.LOCATION(obligatoire) : région dans laquelle se trouve le cluster. Consultez les régions compatibles.PROJECT_NUMBER(obligatoire) : numéro du projet dans lequel se trouve le cluster. Il est utilisé pour créer le nom principal de l'agent de service pour l'entrée de LCA.
Pour en savoir plus sur l'ajout d'une entrée de LCA, consultez Ajouter une entrée de LCA.
Mettre à jour un groupe de consommateurs
Assurez-vous d'avoir suivi les étapes de la section Avant de commencer.
Pour mettre à jour un groupe de consommateurs, procédez comme suit :
gcloud
-
Dans la Google Cloud console, activez Cloud Shell.
En bas de la Google Cloud console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement de shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Exécutez la
gcloud managed-kafka consumer-groups updatecommande :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 sujets à 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 inclure directement le contenu JSON ou YAML.
Le fichier de sujet utilise une structure JSON pour représenter une carte de sujets
ConsumerGroup, au format{ 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 sujets dans un fichier JSON ou YAML, incluez le chemin d'accès complet au sujet, que vous pouvez obtenir en exécutant la commande
gcloud managed-kafak topics describeet au formatprojects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_ID/topics/topic. .
-