An Eventarc trigger declares your interest in a certain event or set
of events. You can configure event routing by specifying filters for the trigger,
including the event source, and the target Google Kubernetes Engine (GKE) service
running in a GKE cluster. Note that targets can only include
services running in (public or private) GKE clusters with
public endpoints. To target services in GKE clusters with
private endpoints, route events to
internal HTTP endpoints.
Eventarc delivers events to the event receiver in a
CloudEvents format through an HTTP request.
These instructions show you how to configure event routing to your
GKE service that is triggered by a direct
Cloud Speech-to-Text event. For more details, see the list of
supported direct events.
Before you begin
You must enable Workload Identity Federation for GKE on the GKE cluster
and node pool that the destination service is running on.
Workload Identity Federation for GKE is required to properly set up the event forwarder and
is the recommended way to access Google Cloud services from applications
running within GKE due to its improved security properties and
manageability.
Workload Identity Federation for GKE
Applications running on GKE might need access to
Google Cloud APIs. Workload Identity Federation for GKE allows a Kubernetes service account
in your GKE cluster to act as an IAM service
account. Pods that use the configured Kubernetes
service account automatically authenticate as the IAM service
account when accessing Google Cloud APIs. Using Workload Identity Federation for GKE
lets you assign distinct, fine-grained identities and authorization for
each application in your cluster. Note that specific permissions must be granted
to the Eventarc trigger's service account. In this document,
see the steps to create a service account.
Eventarc's event forwarder pulls new events from
Eventarc and forwards them to the GKE
destination. This component acts as a mediator between the Pub/Sub
transport layer and the GKE service. It works on existing
services and also supports signaling services (including those not exposed
outside of the fully-managed cluster) while simplifying setup and maintenance.
At a networking level, to receive events in a GKE service, you
don't need to open the service to external traffic as all events are delivered
from an origin that resides within the same GKE cluster.
Note that the event forwarder's lifecycle is managed by Eventarc,
and if you accidentally delete the event forwarder, Eventarc
will restore this component.
For each trigger pointing to a GKE destination, the event
forwarder (a specifically configured gke-forwarder pod) does the following:
It uses the Pub/Sub API to open a
StreamingPull connection
to the trigger transporter (a Pub/Sub topic and subscription)
and receives events as they become available.
It transforms events to the correct
CloudEvents format and encodes and delivers them
as an HTTP POST request to the target GKE service.
The Eventarc service agent needs the permission to run and
regularly update the gke-forwarder instance. This permission must be granted
once per project. For details, in this document, see
Enable GKE destinations.
For each trigger that targets a GKE service,
Eventarc creates an event forwarder component. Eventarc
requires permissions to install the component and manage resources in the
GKE cluster. Before creating an Eventarc
trigger for GKE destinations, ensure that you
complete the following tasks.
If applicable, enable the API related to the direct events. For example,
for Cloud Speech-to-Text events, enable the
Cloud Speech-to-Text API.
If you don't already have one, create a user-managed service account,
then grant it the roles and permissions necessary so that
Eventarc can manage events for your target service.
In the Google Cloud console, go to the Create service account
page.
In the Service account name field, enter a name. The Google Cloud console
fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For
example, Service account for event trigger.
Click Create and continue.
To provide appropriate access, in the Select a role list, select
the required Identity and Access Management (IAM) roles to grant to your service
account. For more information, see
Roles and permissions for GKE targets.
For additional roles, click addAdd another role and add each additional role.
Click Continue.
To finish creating the account, click Done.
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.
Enable the Eventarc, Eventarc Publishing,
Google Kubernetes Engine, and Resource Manager APIs.
If applicable, enable the API related to the direct events. For example,
for Cloud Speech-to-Text events, enable
speech.googleapis.com.
If you don't already have one, create a user-managed service account,
then grant it the roles and permissions necessary so that
Eventarc can manage events for your target GKE
destination.
Replace SERVICE_ACCOUNT_NAME with the name of the service account.
It must be between 6 and 30 characters, and can contain lowercase
alphanumeric characters and dashes. After you create a service account, you
cannot change its name.
This is the ID of the trigger and it must start with a letter. It can
contain up to 63 lowercase letters, numbers, or hyphens.
For the Trigger type, select
Google sources.
In the Event provider list, select
Cloud Speech-to-Text.
Note that the event provider name used in the associated
Google Cloud documentation might not have a prefix
of Cloud or Google Cloud. For example, on the console,
Memorystore for Redis is referred to as
Google Cloud Memorystore for Redis.
In the Event type list, from the Direct events,
select an event type.
To specify the encoding of the event payload, in the Event data
content type list, select application/json or
application/protobuf.
Note that an event payload formatted in JSON is larger than one formatted
in Protobuf. This might impact reliability depending on your event
destination and its limits on event size. For more information, see
Known issues.
In the Region list, select global (Global).
For more information, see
Eventarc locations.
If applicable to the event provider, click Add filter
and specify the following:
In the Attribute 1 field, depending on the direct
event you chose, select a resource ID
that can act as an event filter.
In the Attribute value 1 field, depending on the
operator that you chose, type the exact value or apply a path pattern.
If more attribute filters are applicable, click
Add filter and specify the appropriate values.
Select the Service account that will invoke your service
or workflow.
Or, you can create a new service account.
This specifies the Identity and Access Management (IAM) service account email
associated with the trigger and to which you previously granted
specific roles required
by Eventarc.
In the Event destination list, select
Kubernetes Engine.
Select a service.
This is the name of the service that receives the events for the trigger.
The service must be in the same project as the trigger and will receive
events as HTTP POST requests sent to its root URL path (/),
whenever the event is generated.
Optionally, you can specify the Service URL path to send
the incoming request to.
This is the relative path on the destination service to which the events
for the trigger should be sent. For example: /, /route,
route, route/subroute.
Optionally, to add a label, you can click
addAdd label. Labels are key-value pairs that help you organize your
Google Cloud resources. For more information, see
What are labels?
Click Create.
After a trigger is created, the event source filters can't be modified.
Instead, create a new trigger and delete the old one. For more information,
see Manage triggers.
gcloud
You can create a trigger by running a gcloud eventarc triggers create
command along with required and optional flags.
TRIGGER: the ID of the trigger or a fully qualified
identifier
The --location flag must be global. For more
information, see
Eventarc locations.
DESTINATION_GKE_CLUSTER: the name of the
GKE cluster in which the target
GKE service that receives events is running.
DESTINATION_GKE_LOCATION: (optional) the
Compute Engine region
of the GKE cluster in which the destination GKE
service is running. If not specified, it is assumed that the cluster is a
regional cluster and is in the same region as the trigger.
DESTINATION_GKE_NAMESPACE: (optional) the
namespace in which the destination GKE service is running.
If not specified, the default namespace is used.
DESTINATION_GKE_SERVICE: the name of the
GKE service that receives the events
for the trigger. The service can be in any of the GKE-supported
locations and does not need to be in the same location as the
trigger. However, the service must be in the same project as the trigger
and will receive events as HTTP POST requests sent to its root URL path
(/), whenever the event is generated.
DESTINATION_GKE_PATH: (optional) the relative path
you specify on the destination GKE service to which the
events for the trigger should be sent. For example: /,
/route, route, route/subroute.
EVENT_FILTER_TYPE: the identifier of the event.
An event is generated when an API call for the method succeeds.
For long-running operations, the event is only generated at the end of
the operation, and only if the action is performed successfully.
For a list of supported event types, see
Google event types supported by Eventarc.
COLLECTION_ID (optional): the
resource component that can act as
an event filter; and is one of the following:
customclass
phraseset
RESOURCE_ID: the identifier of the resource
used as the filtering value for the associated collection. For more
information, see
Resource ID.
PATH_PATTERN: the
path pattern to apply when
filtering for the resource.
EVENT_DATA_CONTENT_TYPE: (optional) the
encoding of the event payload.
This can be application/json or
application/protobuf. The default encoding is
application/json.
Note that an event payload formatted in JSON is larger than one formatted
in Protobuf. This might impact reliability depending on your event
destination and its limits on event size. For more information, see
Known issues.
SERVICE_ACCOUNT_NAME: the name of your user-managed service
account.
PROJECT_ID: your Google Cloud project ID.
Notes:
The --event-filters="type=EVENT_FILTER_TYPE"
flag is required. If no other event filter is set, events for all
resources are matched.
EVENT_FILTER_TYPE cannot be changed after
creation. To change EVENT_FILTER_TYPE, create a
new trigger and delete the old one.
Each trigger can have multiple event filters, comma delimited in one
--event-filters=[ATTRIBUTE=VALUE,...]
flag, or you can repeat the flag to add more filters. Only
events that match all the filters are sent to the destination. Wildcards
and regular expressions are not supported; however, when using the
--event-filters-path-pattern flag, you can define a resource
path pattern.
The --service-account flag is used to specify the Identity and Access Management
(IAM) service account email associated with the trigger.
This command creates a trigger called helloworld-trigger for
the event identified as google.cloud.speech.phraseSet.v1.created and
matches events for phraseset IDs
starting with my-phraseset-.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-07-17 UTC."],[],[]]