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.
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 :
-
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 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_CONSOMMATEUR`.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 mettre à jour un groupe de consommateurs, procédez comme suit :
gcloud
-
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , 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 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 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 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. .
-