Un déclencheur Eventarc déclare votre intérêt pour un événement ou un ensemble d'événements spécifique. Vous pouvez configurer le routage d'événements en spécifiant des filtres pour le déclencheur, y compris la source de l'événement et le service Google Kubernetes Engine cible exécuté dans un cluster GKE. Notez que les cibles ne peuvent inclure que des services exécutés dans des clusters GKE (publics ou privés) avec des points de terminaison publics. Pour cibler des services dans des clusters GKE avec des points de terminaison privés, acheminez les événements vers des points de terminaison HTTP internes.
Eventarc fournit des événements au destinataire d'événements au format CloudEvents via une requête HTTP.
Ces instructions vous montrent comment configurer le routage d'événements vers votre service GKE déclenché par un événementCloud Pub/Sub direct (dans ce cas, un message publié dans un sujet Pub/Sub). Pour en savoir plus, consultez la liste des événements directs compatibles.
Avant de commencer
Vous devez activer Workload Identity Federation for GKE sur le cluster GKE sur lequel le service de destination s'exécute. Workload Identity est requis pour configurer correctement le redirecteur d'événements. Il s'agit de la méthode recommandée pour accéder aux services Google Cloud à partir d'applications exécutées dans GKE en raison de ses propriétés de sécurité renforcée et de sa facilité de gestion.
Workload Identity Federation for GKE
Les applications exécutées sur GKE peuvent avoir besoin d'accéder aux API Google Cloud. La fédération d'identité de charge de travail pour GKE permet à un compte de service Kubernetes de votre cluster GKE d'agir en tant que compte de service IAM. Les pods qui utilisent le compte de service Kubernetes configuré s'authentifient automatiquement en tant que compte de service IAM lorsqu'ils accèdent aux API Google Cloud. La fédération d'identité de charge de travail pour GKE vous permet d'attribuer des identités et des autorisations distinctes et précises pour chaque application de votre cluster. Notez que des autorisations spécifiques doivent être accordées au compte de service du déclencheur Eventarc. Dans ce document, consultez la procédure Créer un compte de service.
Pour en savoir plus sur l'activation et la configuration de Workload Identity Federation for GKE sur vos clusters GKE, consultez la page Utiliser Workload Identity Federation for GKE.
Redirecteur d'événements
Le redirecteur d'événement d'Eventarc extrait les nouveaux événements d'Eventarc et les transfère vers la destination GKE. Ce composant agit en tant que médiateur entre la couche de transport Pub/Sub et le service GKE. Il fonctionne avec les services existants et prend également en charge les services de signalement (y compris ceux qui ne sont pas exposés en dehors du cluster entièrement géré) tout en simplifiant la configuration et la maintenance. Au niveau de la mise en réseau, pour recevoir des événements dans un service GKE, vous n'avez pas besoin d'ouvrir le service pour le trafic externe, car tous les événements sont diffusés à partir d'une origine résidant dans le même cluster GKE.
Notez que le cycle de vie du redirecteur d'événements est géré par Eventarc. Si vous supprimez accidentellement le redirecteur d'événement, Eventarc restaurera ce composant.
Pour chaque déclencheur pointant vers une destination GKE, le redirecteur d'événements (un pod gke-forwarder
spécifiquement configuré) effectue les opérations suivantes :
Il utilise l'API Pub/Sub pour ouvrir une connexion
StreamingPull
au transporteur de déclencheur (un sujet et un abonnement Pub/Sub) et reçoit des événements dès qu'ils deviennent disponibles.Il transforme les événements au format CloudEvents approprié, les encode et les transmet sous forme de requête
HTTP POST
au service GKE cible.
L'agent de service Eventarc a besoin de l'autorisation d'exécuter et de mettre à jour régulièrement l'instance gke-forwarder
. Cette autorisation doit être accordée une fois par projet. Pour en savoir plus, consultez ce document sur la page Activer les destinations GKE.
Préparer la création d'un déclencheur
Pour chaque déclencheur ciblant un service GKE, Eventarc crée un composant de redirecteur d'événement. Eventarc nécessite des autorisations pour installer le composant et gérer les ressources dans le cluster GKE. Avant de créer un déclencheur Eventarc pour les destinations GKE, veillez à effectuer les tâches suivantes.
Console
Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
Activez les API Eventarc, Eventarc Publishing, Google Kubernetes Engine et Resource Manager.
Le cas échéant, activez l'API associée aux événements directs. Par exemple, pour les événements Cloud Pub/Sub , activez l'APICloud Pub/Sub .
Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements de votre service cible.
Dans la console Google Cloud, accédez à la page Créer un compte de service.
Sélectionnez votre projet.
Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for event trigger
.Cliquez sur Créer et continuer.
Pour fournir un accès approprié, dans la liste Sélectionner un rôle, sélectionnez les rôles IAM (Identity and Access Management) requis à attribuer à votre compte de service. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles GKE.
Pour ajouter des rôles supplémentaires, cliquez sur
Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.Cliquez sur Continuer.
Pour terminer la création du compte, cliquez sur OK.
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.
Activez les API Eventarc, Eventarc Publishing, Google Kubernetes Engine et Resource Manager.
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
Le cas échéant, activez l'API associée aux événements directs. Par exemple, pour les événements Cloud Pub/Sub , activez
pubsub.googleapis.com
.Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements pour votre destination GKE cible.
Créez le compte de service :
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Remplacez
SERVICE_ACCOUNT_NAME
par le nom du compte de service. Il doit comporter entre 6 et 30 caractères alphanumériques pouvant inclure des minuscules et des tirets. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.Attribuez les rôles ou les autorisations IAM (Identity and Access Management) requis. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles GKE.
Activer les destinations GKE
Pour permettre à Eventarc de gérer les ressources du cluster GKE, activez les destinations GKE et liez l'agent de service Eventarc aux rôles requis.
Activez les destinations GKE pour Eventarc :
gcloud eventarc gke-destinations init
Lorsque vous êtes invité à lier les rôles requis, saisissez
y
.Les rôles suivants sont liés :
roles/compute.viewer
roles/container.developer
roles/iam.serviceAccountAdmin
Créer un déclencheur
Vous pouvez créer un déclencheur Eventarc à l'aide de Google Cloud CLI ou de la console Google Cloud.
Console
- Dans la console Google Cloud, accédez à la page Déclencheurs d'Eventarc.
- Cliquez sur Créer un déclencheur.
- Saisissez un nom de déclencheur
Il s'agit de l'ID du déclencheur, qui doit commencer par une lettre. Il peut contenir jusqu'à 63 lettres minuscules, chiffres ou traits d'union.
- Pour le champ Type de déclencheur, sélectionnez Sources Google.
- Dans la liste Fournisseur d'événements, sélectionnez Cloud Pub/Sub.
Notez que le nom du fournisseur d'événements utilisé dans la documentation Google Cloud associée peut ne pas avoir le préfixe Cloud ou Google Cloud. Par exemple, sur la console, Memorystore pour Redis est appelé Google Cloud Memorystore pour Redis.
- Dans la liste Type d'événement, sélectionnez google.cloud.pubsub.topic.v1.messagePublished parmi les événements directs
- Dans la liste Sélectionner un sujet Cloud Pub/Sub, sélectionnez un sujet ou acceptez la valeur par défaut Aucun afin qu'un sujet soit créé pour vous.
- Dans la liste Région, sélectionnez la même région que le service Google Cloud qui génère des événements.
Pour en savoir plus, consultez la page Emplacements Eventarc.
- Sélectionnez le compte de service qui appellera votre service ou workflow.
Vous pouvez également créer un nouveau compte de service.
Cela spécifie l'adresse e-mail du compte de service Identity and Access Management (IAM) associée au déclencheur et auquel vous avez précédemment attribué les rôles spécifiques requis par Eventarc.
- Dans la liste Destination de l'événement, sélectionnez Kubernetes Engine.
- Sélectionner un service.
Il s'agit du nom du service qui reçoit les événements du déclencheur. Le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (
/
), à chaque déclenchement de l'événement. - Vous pouvez éventuellement spécifier le Chemin de l'URL du service auquel envoyer la requête entrante.
Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Exemple :
/
,/route
,route
,route/subroute
. - Cliquez sur Créer.
Une fois le déclencheur créé, vous ne pouvez plus modifier les filtres de source d'événement. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien. Pour en savoir plus, consultez la section Gérer les déclencheurs.
gcloud
Vous pouvez créer un déclencheur en exécutant une commande gcloud eventarc triggers create
, associée aux options obligatoires et facultatives.
Messages Pub/Sub (sujet existant)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Remplacez les éléments suivants :
TRIGGER
: l'ID du déclencheur ou un identifiant complet.LOCATION
: l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriétéeventarc/location
(par exemple,gcloud config set eventarc/location us-central1
).Les déclencheurs Pub/Sub pour Eventarc ne sont disponibles que dans les emplacements comprenant une seule région. Vous ne pouvez pas créer un déclencheur Eventarc global. Pour en savoir plus, consultez la page Emplacements Eventarc.
DESTINATION_GKE_CLUSTER
: nom du cluster GKE dans lequel le service GKE cible qui reçoit des événements est en cours d'exécution.DESTINATION_GKE_LOCATION
: (facultatif) région Compute Engine du cluster GKE dans lequel le service GKE de destination s'exécute. Si la valeur n'est pas spécifiée, il est supposé que le cluster est un cluster régional et qu'il se trouve dans la même région que le déclencheur.DESTINATION_GKE_NAMESPACE
: (facultatif) espace de noms dans lequel le service GKE de destination est exécuté. S'il n'est pas spécifié, l'espace de nomsdefault
est utilisé.DESTINATION_GKE_SERVICE
: nom du service GKE qui reçoit les événements du déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec GKE et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/
), à chaque déclenchement de l'événement.DESTINATION_GKE_PATH
: (facultatif) chemin d'accès relatif que vous spécifiez sur le service GKE de destination auquel les événements du déclencheur doivent être envoyés. Par exemple :/
,/route
,route
,route/subroute
.PROJECT_ID
: ID de votre projet Google Cloud.
TOPIC_ID
correspond à l'ID du sujet Pub/Sub existant. Le sujet doit se trouver dans le même projet que le déclencheur.SERVICE_ACCOUNT_NAME
: nom de votre compte de service géré par l'utilisateur.
Remarques :
- L'option
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
est obligatoire et ne peut pas être modifiée. Pour un type d'événement différent, vous devez créer un déclencheur. - Chaque déclencheur peut comporter plusieurs filtres d'événement, séparés par une virgule et spécifiés dans une option
--event-filters
=[ATTRIBUTE
=VALUE
,…], ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés. - L'option
--transport-topic
permet de spécifier l'ID du sujet Pub/Sub existant ou son identifiant complet. - Par défaut, les abonnements Pub/Sub créés pour Eventarc persistent, quelle que soit l'activité, et n'expirent pas. Pour modifier la durée d'inactivité, consultez la section Gérer les abonnements.
Exemple :
gcloud eventarc triggers create helloworld-trigger \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Cette commande crée un déclencheur nommé helloworld-trigger
pour le sujet Pub/Sub identifié par projects/${PROJECT_ID}/topics/${TOPIC_ID}
.
Messages Pub/Sub (nouveau sujet)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Remplacez les éléments suivants :
TRIGGER
: l'ID du déclencheur ou un identifiant complet.LOCATION
: l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriétéeventarc/location
(par exemple,gcloud config set eventarc/location us-central1
).Les déclencheurs Pub/Sub pour Eventarc ne sont disponibles que dans les emplacements comprenant une seule région. Vous ne pouvez pas créer un déclencheur Eventarc global. Pour en savoir plus, consultez la page Emplacements Eventarc.
DESTINATION_GKE_CLUSTER
: nom du cluster GKE dans lequel le service GKE cible qui reçoit des événements est en cours d'exécution.DESTINATION_GKE_LOCATION
: (facultatif) région Compute Engine du cluster GKE dans lequel le service GKE de destination s'exécute. Si la valeur n'est pas spécifiée, il est supposé que le cluster est un cluster régional et qu'il se trouve dans la même région que le déclencheur.DESTINATION_GKE_NAMESPACE
: (facultatif) espace de noms dans lequel le service GKE de destination est exécuté. S'il n'est pas spécifié, l'espace de nomsdefault
est utilisé.DESTINATION_GKE_SERVICE
: nom du service GKE qui reçoit les événements du déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec GKE et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/
), à chaque déclenchement de l'événement.DESTINATION_GKE_PATH
: (facultatif) chemin d'accès relatif que vous spécifiez sur le service GKE de destination auquel les événements du déclencheur doivent être envoyés. Par exemple :/
,/route
,route
,route/subroute
.SERVICE_ACCOUNT_NAME
: nom de votre compte de service géré par l'utilisateur.PROJECT_ID
: ID de votre projet Google Cloud.
Remarques :
- L'option
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
est obligatoire et ne peut pas être modifiée. Pour un type d'événement différent, vous devez créer un déclencheur. - Chaque déclencheur peut comporter plusieurs filtres d'événement, séparés par une virgule et spécifiés dans une option
--event-filters
=[ATTRIBUTE
=VALUE
,…], ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés. - Par défaut, les abonnements Pub/Sub créés pour Eventarc persistent, quelle que soit l'activité, et n'expirent pas. Pour modifier la durée d'inactivité, consultez la section Gérer les abonnements.
Exemple :
gcloud eventarc triggers create helloworld-trigger \
--location=us-central1 \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Cela crée un sujet Pub/Sub et un déclencheur associé nommé helloworld-trigger
.
Terraform
Vous pouvez créer un déclencheur pour une destination GKE à l'aide de Terraform. Pour en savoir plus, consultez la page Créer un déclencheur à l'aide de Terraform.
Répertorier un déclencheur
Vous pouvez confirmer la création d'un déclencheur en répertoriant les déclencheurs Eventarc à l'aide de Google Cloud CLI ou de la console Google Cloud.
Console
Dans la console Google Cloud, accédez à la page Déclencheurs d'Eventarc.
Accéder à la page "Déclencheurs"
Cette page répertorie vos déclencheurs dans tous les emplacements et inclut des détails tels que les noms, les régions, les fournisseurs d'événements, les destinations, etc.
Pour filtrer vos déclencheurs, procédez comme suit :
- Cliquez sur Filtrer ou sur le champ Filtrer les déclencheurs.
- Dans la liste Propriétés, sélectionnez une option permettant de filtrer les déclencheurs.
Vous pouvez sélectionner une seule propriété ou utiliser l'opérateur logique
OR
pour ajouter d'autres propriétés.Pour trier vos déclencheurs, à côté d'un en-tête de colonne compatible, cliquez sur
Trier.
gcloud
Exécutez la commande suivante pour répertorier vos déclencheurs :
gcloud eventarc triggers list --location=-
Cette commande répertorie vos déclencheurs dans tous les emplacements et inclut des détails tels que les noms, les types, les destinations et les états.