14.3. イベント変換のデプロイメントパターン
アーキテクチャーの要件に応じて、イベントフローのさまざまなポイントで EventTransform を使用できます。次のパターンがサポートされています。
14.3.1. ソースからブローカーへのイベント変換 リンクのコピーリンクがクリップボードにコピーされました!
ソースから EventTransform リソースにイベントをルーティングし、変換ロジックを適用してブローカーに転送することで、正規化または強化されたイベントのみが消費用にルーティングされるようにできます。
次の例に示すように、ApiServerSource リソースを設定してイベントを EventTransform リソースに送信し、イベントを変換してデフォルトのブローカーにルーティングできます。
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
14.3.2. トリガーからサービスへのイベント変換 リンクのコピーリンクがクリップボードにコピーされました!
イベントは、Broker EventTransform リソースはフィルタリングされたイベントを再形成または拡充し、Service または 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
14.3.3. Broker 応答イベント変換 リンクのコピーリンクがクリップボードにコピーされました!
シンクなしで EventTransform を設定すると、変換されたイベントを Broker に再公開し、追加の Trigger またはコンシューマーにルーティングできるようになります。
Broker 応答機能を使用する場合は、変換後のイベントが EventTransform を呼び出したトリガーと再度一致しないように注意してください。そうしないと、無限のイベントループが発生する危険があります。
original.event.type タイプのイベントを Trigger でフィルタリングし、EventTransform で変換して、transformed.event.type タイプとしてブローカーに再公開できます。タイプまたは別の属性を更新すると、同じトリガーによって再処理されることなく、イベントが別のトリガーにルーティングされます。
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": $
}