Using triggers enables you to filter events from the broker for delivery to event sinks.

Prerequisites

  • You have installed Knative Eventing and the kn CLI.

  • You have access to an available broker.

  • You have access to an available event consumer, such as a Knative service.

Creating a trigger using the Developer perspective

After you have created a broker, you can create a trigger in the web console Developer perspective.

Prerequisites
  • 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 are in the Developer perspective.

  • 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.

Procedure
  1. In the Developer perspective, navigate to the Topology page.

  2. Hover over the broker that you want to create a trigger for, and drag the arrow. The Add Trigger option is displayed.

    Create a trigger for the broker
  3. Click Add Trigger.

  4. Select your sink as a Subscriber from the drop-down list.

  5. Click Add.

Verification
  • After the subscription has been created, it is represented as a line that connects the broker to the service in the Topology view:

    Trigger in the Topology view

Deleting a trigger using the Developer perspective

You can delete triggers in the web console Developer perspective.

Prerequisites
  • To delete a trigger using the Developer perspective, ensure that you have logged in to the web console.

Procedure
  1. In the Developer perspective, navigate to the Topology page.

  2. Click on the trigger that you want to delete.

  3. In the Actions context menu, select Delete Trigger.

    Delete a trigger

Creating a trigger using kn

You can create a trigger by using the kn trigger create command.

Procedure
  • 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.

Listing triggers using kn

The kn trigger list command prints a list of available triggers.

Procedure
  1. Print a list of available triggers:

    $ kn trigger list
    Example output
    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
  2. Optional: Print a list of triggers in JSON format:

    $ kn trigger list -o json

Describing a trigger using kn

You can use the kn trigger describe command to print information about a trigger.

Procedure
  • Enter the command:

    $ kn trigger describe <trigger_name>
    Example output
    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

Filtering events using triggers

In the following trigger example, only events with the attribute type: dev.knative.samples.helloworld will reach 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 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

Updating a trigger using kn

You can use the kn trigger update command with certain flags to update attributes for a trigger.

Procedure
  • 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

Deleting a trigger using kn

Procedure
  • Delete a trigger:

    $ kn trigger delete <trigger_name>
Verification
  1. List existing triggers:

    $ kn trigger list
  2. Verify that the trigger no longer exists:

    Example output
    No triggers found.