トリガーの使用¶
トリガーは、特定のブローカーからのイベントをサブスクライブする要望を表します。
subscriber
の値は Destination である必要があります。
トリガーの例¶
次のトリガーは、default
ブローカーからのすべてのイベントを受信し、それらを Knative Serving サービス my-service
に配信します。
-
次の例を使用して YAML ファイルを作成します
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: default subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: my-service
-
コマンドを実行して YAML ファイルを適用します
ここで、kubectl apply -f <filename>.yaml
<filename>
は前の手順で作成したファイルの名前です。
次のトリガーは、default
ブローカーからのすべてのイベントを受信し、Kubernetes サービス my-service
のカスタムパス /my-custom-path
に配信します
-
次の例を使用して YAML ファイルを作成します
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: default subscriber: ref: apiVersion: v1 kind: Service name: my-service uri: /my-custom-path
-
コマンドを実行して YAML ファイルを適用します
ここで、kubectl apply -f <filename>.yaml
<filename>
は前の手順で作成したファイルの名前です。
トリガーのフィルタリング¶
CloudEvents の属性と拡張機能に基づいて、さまざまな形式のフィルタリングがサポートされています。複数の filters
が提供されている場合、イベントをトリガーのサブスクライバーに渡すには、すべてが true に評価される必要があります。 CloudEvents の data
フィールドでのフィルタリングはサポートされていないことに注意してください。
重要
このセクションで説明されているフィルターは、現在、Apache Kafka ブローカーと MTChannelBasedBroker でのみサポートされています。他のブローカーについては、レガシー属性フィルターを参照してください。
例¶
この例では、タイプが dev.knative.foo.bar
で、拡張機能 myextension
が `-extensions` で終わる default
ブローカーからのイベントをフィルタリングします。
-
次の例を使用して YAML ファイルを作成します
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: my-service-trigger spec: broker: default filters: exact: type: dev.knative.foo.bar suffix: myextension: -value subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: my-service
-
コマンドを実行して YAML ファイルを適用します
ここで、kubectl apply -f <filename>.yaml
<filename>
は前の手順で作成したファイルの名前です。
サポートされるフィルター方言¶
exact
¶
CloudEvent 属性の文字列値は、指定された文字列値と完全に一致する必要があります。照合は大文字と小文字を区別します。属性が文字列でない場合、フィルターは属性の文字列表現を指定された文字列値と比較します。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- exact:
type: com.github.push
prefix
¶
CloudEvent 属性の文字列値は、指定された文字列値で始まる必要があります。照合は大文字と小文字を区別します。属性が文字列でない場合、フィルターは属性の文字列表現を指定された文字列値と比較します。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- prefix:
type: com.github.
suffix
¶
CloudEvent 属性の文字列値は、指定された文字列値で終わる必要があります。照合は大文字と小文字を区別します。属性が文字列でない場合、フィルターは属性の文字列表現を指定された文字列値と比較します。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- suffix:
type: .created
all
¶
ネストされたすべてのフィルター式が true と評価される必要があります。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- all:
- exact:
type: com.github.push
- exact:
subject: https://github.com/cloudevents/spec
any
¶
ネストされた少なくとも1つのフィルター式が true と評価される必要があります。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- any:
- exact:
type: com.github.push
- exact:
subject: https://github.com/cloudevents/spec
not
¶
評価されたネストされた式は false と評価される必要があります。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- not:
exact:
type: com.github.push
cesql
¶
指定された CloudEvents SQL 式 は true と評価される必要があります。
重要
Knative 1.15 以降では、CloudEvents SQL v1.0 仕様のみがサポートされています。Knative v1.15 より前に記述された CESQL 式は、CESQL 仕様にいくつかの変更があったため、検証する必要があります。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
...
spec:
...
filters:
- cesql: "source LIKE '%commerce%' AND type IN ('order.created', 'order.updated', 'order.canceled')"
レガシー属性フィルター¶
レガシー属性フィルターは、CloudEvents 属性と拡張機能の数に対して完全一致フィルタリングを提供します。そのセマンティクスと動作は exact
フィルター方言と同じであり、可能な限りユーザーは exact
フィルターに移行する必要があります。ただし、下位互換性のために、属性フィルターはすべてのユーザーに対して引き続き機能します。次の例は、タイプが dev.knative.foo.bar
で、値が my-extension-value
の拡張機能 myextension
を持つ default
ブローカーからのイベントをフィルターします。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: my-service-trigger
spec:
broker: default
filter:
attributes:
type: dev.knative.foo.bar
myextension: my-extension-value
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: my-service
filters
フィールドと filter
フィールドの両方が提供されている場合、filters
フィールドが filter
フィールドをオーバーライドします。たとえば、次のトリガーでは、タイプ dev.knative.a
のイベントは配信されますが、タイプ dev.knative.b
のイベントは配信されません。
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: my-service-trigger
spec:
broker: default
filters:
exact:
type: dev.knative.a
filter:
attributes:
type: dev.knative.b
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: my-service
トリガーのアノテーション¶
次の 2 つのアノテーションを設定することで、トリガーの動作を変更できます。
eventing.knative.dev/injection
:enabled
に設定すると、Eventing は、トリガーが存在しない場合にトリガーのブローカーを自動的に作成します。ブローカーは、トリガーが作成される名前空間に作成されます。このアノテーションは、オプションでデフォルトでは有効になっていないSugar Controller が有効になっている場合にのみ機能します。knative.dev/dependency
: このアノテーションは、トリガーが依存するソースをマークするために使用されます。依存関係のいずれかが準備できていない場合、トリガーは準備完了になりません。
次の YAML は、依存関係を持つトリガーの例です
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: my-service-trigger
annotations:
knative.dev/dependency: '{"kind":"PingSource","name":"test-ping-source","apiVersion":"sources.knative.dev/v1"}'
spec:
broker: default
filter:
attributes:
type: dev.knative.foo.bar
myextension: my-extension-value
subscriber:
ref:
apiVersion: serving.knative.dev/v1
kind: Service
name: my-service