14.3. イベント変換のデプロイメントパターン


EventTransform は、アーキテクチャーのニーズに応じて、イベントフローのさまざまなポイントで使用できます。以下のパターンがサポートされます。

14.3.1. ソースからブローカーイベントの変換

イベントを Source から EventTransform リソースにルーティングし、変換ロジックを適用して Broker に転送し、正規化または強化されたイベントのみが消費のためにルーティングされるようにできます。

以下の例のように、ApiServerSource リソースを設定して、イベントを EventTransform リソースに送信し、それらを変換して default Broker にルーティングできます。

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: k8s-events
spec:
  serviceAccountName: event-watcher
  resources:
    - apiVersion: v1
      kind: Event
  sink:
    ref:
      apiVersion: eventing.knative.dev/v1alpha1
      kind: EventTransform
      name: event-transformer
---
apiVersion: eventing.knative.dev/v1alpha1
kind: EventTransform
metadata:
  name: event-transformer
spec:
  sink:
    ref:
      apiVersion: eventing.knative.dev/v1
      kind: Broker
      name: default
  jsonata:
    expression: |
      # transformation expression
Copy to Clipboard Toggle word wrap

14.3.2. サービスイベントの変換へのトリガー

イベントは Broker Trigger EventTransform Service または Sink を介してルーティングできます。Broker はすべてのイベントを受信し、Trigger はそれらを属性でフィルタリングし、EventTransform リソースがフィルターされたイベントを再生成または強化し、サービスまたは Sink が結果を処理します。

元のプロデューサーを変更したり、他のサブスクライバーに影響を与えたりすることなく、特定のコンシューマーに対してイベントを調整できます。変換はフィルタリング後にのみ適用されるため、関連するイベントのみが再成され、効率が改善され、不要な処理が削減されます。

タイプの original.event.type のイベントをフィルタリングし、それらを EventTransform にルーティングし、変換されたイベントをこの設定のサービスに配信できます。

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: transform-trigger
spec:
  broker: default
  filter:
    attributes:
      type: original.event.type
  subscriber:
    ref:
      apiVersion: eventing.knative.dev/v1alpha1
      kind: EventTransform
      name: event-transformer
---
apiVersion: eventing.knative.dev/v1alpha1
kind: EventTransform
metadata:
  name: event-transformer
spec:
  sink:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: destination-service
  jsonata:
    expression: |
      # transformation expression
Copy to Clipboard Toggle word wrap

14.3.3. ブローカーのリプライイベント変換

変換されたイベントをブローカーに再パブリッシュするようにシンクなしで EventTransform を設定できます。ここで、それらを追加の Triggers または consumer にルーティングできます。

注記

Broker の応答機能を使用する場合は、変換されたイベントが EventTransform を呼び出した Trigger に一致しないようにしてください。そうしないと、無限のイベントループが発生するリスクがあります。

トリガーを使用して original.event.type タイプのイベントをフィルタリングし、EventTransform で変換し、transformed.event.type 型として Broker に再公開できます。type または別の属性を更新すると、同じ Trigger で再処理せずにイベントが異なる Triggers にルーティングされます。

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: transform-trigger
spec:
  broker: default
  filter:
    attributes:
      type: original.event.type
  subscriber:
    ref:
      apiVersion: eventing.knative.dev/v1alpha1
      kind: EventTransform
      name: event-transformer
---
apiVersion: eventing.knative.dev/v1alpha1
kind: EventTransform
metadata:
  name: event-transformer
spec:
  # No sink specified - reply to Broker
  jsonata:
    expression: |
      {
        "specversion": "1.0",
        "id": id,
        "time": time,
        "type": "transformed.event.type",
        "source": "transform.event-transformer",
        "data": $
      }
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat