コンテンツにスキップ

トリガーの使用

トリガーは、特定のブローカーからのイベントをサブスクライブする要望を表します。

subscriber の値は Destination である必要があります。

トリガーの例

次のトリガーは、default ブローカーからのすべてのイベントを受信し、それらを Knative Serving サービス my-service に配信します。

  1. 次の例を使用して 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
    
  2. コマンドを実行して YAML ファイルを適用します

    kubectl apply -f <filename>.yaml
    
    ここで、<filename> は前の手順で作成したファイルの名前です。

次のトリガーは、default ブローカーからのすべてのイベントを受信し、Kubernetes サービス my-service のカスタムパス /my-custom-path に配信します

  1. 次の例を使用して 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
    
  2. コマンドを実行して YAML ファイルを適用します

    kubectl apply -f <filename>.yaml
    
    ここで、<filename> は前の手順で作成したファイルの名前です。

トリガーのフィルタリング

CloudEvents の属性と拡張機能に基づいて、さまざまな形式のフィルタリングがサポートされています。複数の filters が提供されている場合、イベントをトリガーのサブスクライバーに渡すには、すべてが true に評価される必要があります。 CloudEvents の data フィールドでのフィルタリングはサポートされていないことに注意してください。

重要

このセクションで説明されているフィルターは、現在、Apache Kafka ブローカーと MTChannelBasedBroker でのみサポートされています。他のブローカーについては、レガシー属性フィルターを参照してください。

この例では、タイプが dev.knative.foo.bar で、拡張機能 myextension が `-extensions` で終わる default ブローカーからのイベントをフィルタリングします。

  1. 次の例を使用して 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
    
  2. コマンドを実行して 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

サイトトラフィックを把握するために、分析と Cookie を使用しています。当サイトのご利用に関する情報は、その目的のために Google と共有されます。詳細はこちら。