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