Brokers can be used in combination with triggers to deliver events from an event source to an event sink. Events are sent from an event source to a broker as an HTTP POST
request. After events have entered the broker, they can be filtered by CloudEvent attributes using triggers, and sent as an HTTP POST
request to an event sink.
If you are using a Kafka broker, you can configure the delivery order of events from triggers to event sinks. See Configuring event delivery ordering for triggers.
Using the OpenShift Container Platform web console provides a streamlined and intuitive user interface to create a trigger. After Knative Eventing is installed on your cluster and you have created a broker, you can create a trigger by using the web console.
The OpenShift Serverless Operator, Knative Serving, and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have logged in to the web console.
You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in OpenShift Container Platform.
You have created a broker and a Knative service or other event sink to connect to the trigger.
In the Developer perspective, navigate to the Topology page.
Hover over the broker that you want to create a trigger for, and drag the arrow. The Add Trigger option is displayed.
Click Add Trigger.
Select your sink in the Subscriber list.
Click Add.
After the subscription has been created, you can view it in the Topology page, where it is represented as a line that connects the broker to the event sink.
In the Developer perspective, navigate to the Topology page.
Click on the trigger that you want to delete.
In the Actions context menu, select Delete Trigger.
Using the Knative (kn
) CLI to create triggers provides a more streamlined and intuitive user interface over modifying YAML files directly. You can use the kn trigger create
command to create a trigger.
The OpenShift Serverless Operator and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have installed the Knative (kn
) CLI.
You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in OpenShift Container Platform.
Create a trigger:
$ kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>
Alternatively, you can create a trigger and simultaneously create the default
broker using broker injection:
$ kn trigger create <trigger_name> --inject-broker --filter <key=value> --sink <sink_name>
By default, triggers forward all events sent to a broker to sinks that are subscribed to that broker.
Using the --filter
attribute for triggers allows you to filter events from a broker, so that subscribers will only receive a subset of events based on your defined criteria.
Using the Knative (kn
) CLI to list triggers provides a streamlined and intuitive user interface. You can use the kn trigger list
command to list existing triggers in your cluster.
The OpenShift Serverless Operator and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have installed the Knative (kn
) CLI.
Print a list of available triggers:
$ kn trigger list
NAME BROKER SINK AGE CONDITIONS READY REASON
email default ksvc:edisplay 4s 5 OK / 5 True
ping default ksvc:edisplay 32s 5 OK / 5 True
Optional: Print a list of triggers in JSON format:
$ kn trigger list -o json
Using the Knative (kn
) CLI to describe triggers provides a streamlined and intuitive user interface. You can use the kn trigger describe
command to print information about existing triggers in your cluster by using the Knative CLI.
The OpenShift Serverless Operator and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have installed the Knative (kn
) CLI.
You have created a trigger.
Enter the command:
$ kn trigger describe <trigger_name>
Name: ping
Namespace: default
Labels: eventing.knative.dev/broker=default
Annotations: eventing.knative.dev/creator=kube:admin, eventing.knative.dev/lastModifier=kube:admin
Age: 2m
Broker: default
Filter:
type: dev.knative.event
Sink:
Name: edisplay
Namespace: default
Resource: Service (serving.knative.dev/v1)
Conditions:
OK TYPE AGE REASON
++ Ready 2m
++ BrokerReady 2m
++ DependencyReady 2m
++ Subscribed 2m
++ SubscriberResolved 2m
Using the Knative (kn
) CLI to filter events by using triggers provides a streamlined and intuitive user interface. You can use the kn trigger create
command, along with the appropriate flags, to filter events by using triggers.
In the following trigger example, only events with the attribute type: dev.knative.samples.helloworld
are sent to the event sink:
$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
You can also filter events by using multiple attributes. The following example shows how to filter events using the type, source, and extension attributes:
$ kn trigger create <trigger_name> --broker <broker_name> --sink ksvc:<service_name> \
--filter type=dev.knative.samples.helloworld \
--filter source=dev.knative.samples/helloworldsource \
--filter myextension=my-extension-value
Using the Knative (kn
) CLI to update triggers provides a streamlined and intuitive user interface. You can use the kn trigger update
command with certain flags to update attributes for a trigger.
The OpenShift Serverless Operator and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have installed the Knative (kn
) CLI.
You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in OpenShift Container Platform.
Update a trigger:
$ kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]
You can update a trigger to filter exact event attributes that match incoming events. For example, using the type
attribute:
$ kn trigger update <trigger_name> --filter type=knative.dev.event
You can remove a filter attribute from a trigger. For example, you can remove the filter attribute with key type
:
$ kn trigger update <trigger_name> --filter type-
You can use the --sink
parameter to change the event sink of a trigger:
$ kn trigger update <trigger_name> --sink ksvc:my-event-sink
Using the Knative (kn
) CLI to delete a trigger provides a streamlined and intuitive user interface. You can use the kn trigger delete
command to delete a trigger.
The OpenShift Serverless Operator and Knative Eventing are installed on your OpenShift Container Platform cluster.
You have installed the Knative (kn
) CLI.
You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in OpenShift Container Platform.
Delete a trigger:
$ kn trigger delete <trigger_name>
List existing triggers:
$ kn trigger list
Verify that the trigger no longer exists:
No triggers found.
If you are using a Kafka broker, you can configure the delivery order of events from triggers to event sinks.
The OpenShift Serverless Operator, Knative Eventing, and Knative Kafka are installed on your OpenShift Container Platform cluster.
Kafka broker is enabled for use on your cluster, and you have created a Kafka broker.
You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in OpenShift Container Platform.
You have installed the OpenShift (oc
) CLI.
Create or modify a Trigger
object and set the kafka.eventing.knative.dev/delivery.order
annotation:
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: <trigger_name>
annotations:
kafka.eventing.knative.dev/delivery.order: ordered
...
The supported consumer delivery guarantees are:
unordered
An unordered consumer is a non-blocking consumer that delivers messages unordered, while preserving proper offset management.
ordered
An ordered consumer is a per-partition blocking consumer that waits for a successful response from the CloudEvent subscriber before it delivers the next message of the partition.
The default ordering guarantee is unordered
.
Apply the Trigger
object:
$ oc apply -f <filename>
Configure event delivery parameters that are applied in cases where an event fails to be delivered to an event sink. See Examples of configuring event delivery parameters.