Skip to content

New trigger filters

Flag name: new-apiserversource-filters

Stage: Alpha, disabled by default

Tracking issue: #7791

Overview

This feature enables a new filters field in APIServerSource that conforms to the filters API field defined in the CloudEvents Subscriptions API. It allows users to specify a set of powerful filter expressions, where each expression evaluates to either true or false for each event.

The following example shows a APIServerSource using the new filters field:

---
apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: my-apiserversource
 namespace: default
spec:
  filters:
  - any:
    - exact:
        type: dev.knative.apiserver.ref.add

  serviceAccountName: apiserversource
  mode: Reference
  resources: ...
  sink: ...

About the filters field

  • An array of filter expressions that evaluates to true or false. If any filter expression in the array evaluates to false, the event will not be sent to the sink.
  • Each filter expression follows a dialect that defines the type of filter and the set of additional properties that are allowed within the filter expression.

Supported filter dialects

The filters field supports the following dialects:

exact

CloudEvent attribute String value must exactly match the specified String value. Matching is case-sensitive.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - exact:
        type: com.github.push

prefix

CloudEvent attribute String value must start with the specified String value. Matching is case-sensitive.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - prefix:
        type: com.github.

suffix

CloudEvent attribute String value must end with the specified String value. Matching is case-sensitive.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - suffix:
        type: .created

all

All nested filter expressions must evaluate to true.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - all:
        - exact:
            type: com.github.push
        - exact:
            subject: https://github.com/cloudevents/spec

any

At least one nested filter expression must evaluate to true.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - any:
        - exact:
            type: com.github.push
        - exact:
            subject: https://github.com/cloudevents/spec

not

The nested expression evaluated must evaluate to false.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
      - not:
          exact:
              type: com.github.push

cesql

The provided CloudEvents SQL Expression must evaluate to true.

apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
  ...
spec:
  ...
  filters:
    - cesql: "source LIKE '%commerce%' AND type IN ('order.created', 'order.updated', 'order.canceled')"

FAQ

Which are the event types APIServerSource provide?

  • dev.knative.apiserver.resource.add
  • dev.knative.apiserver.resource.update
  • dev.knative.apiserver.resource.delete
  • dev.knative.apiserver.ref.add
  • dev.knative.apiserver.ref.update
  • dev.knative.apiserver.ref.delete

We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.

× OK