新的觸發器篩選器¶
旗標名稱: new-apiserversource-filters
階段: Alpha,預設停用
追蹤問題: #7791
概觀¶
此功能在 APIServerSource 中啟用新的 filters
欄位,該欄位符合 CloudEvents 訂閱 API
中定義的篩選器 API 欄位。它允許使用者指定一組強大的篩選器運算式,其中每個運算式針對每個事件評估為 true 或 false。
以下範例顯示使用新的 filters
欄位的 APIServerSource
---
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: ...
關於篩選器欄位¶
- 評估為 true 或 false 的篩選器運算式陣列。如果陣列中的任何篩選器運算式評估為 false,則該事件將不會傳送到
sink
。 - 每個篩選器運算式都遵循一種方言,該方言定義篩選器的類型以及篩選器運算式中允許的一組額外屬性。
支援的篩選器方言¶
filters
欄位支援以下方言
exact
¶
CloudEvent 屬性字串值必須完全符合指定的字串值。比對區分大小寫。
apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
...
spec:
...
filters:
- exact:
type: com.github.push
prefix
¶
CloudEvent 屬性字串值必須以指定的字串值開頭。比對區分大小寫。
apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
...
spec:
...
filters:
- prefix:
type: com.github.
suffix
¶
CloudEvent 屬性字串值必須以指定的字串值結尾。比對區分大小寫。
apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
...
spec:
...
filters:
- suffix:
type: .created
all
¶
所有巢狀篩選器運算式都必須評估為 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
¶
至少一個巢狀篩選器運算式必須評估為 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
¶
評估的巢狀運算式必須評估為 false。
apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
...
spec:
...
filters:
- not:
exact:
type: com.github.push
cesql
¶
提供的 CloudEvents SQL 運算式 必須評估為 true。
apiVersion: sources.knative.dev/v1
kind: APIServerSource
metadata:
...
spec:
...
filters:
- cesql: "source LIKE '%commerce%' AND type IN ('order.created', 'order.updated', 'order.canceled')"
常見問題¶
APIServerSource 提供哪些事件類型?¶
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