高度なイベントフィルタリング¶
どのようなKnative機能について学習しますか?¶
- トリガーとブローカー
- Knativeがどのようにしてすべてを魔法のように接続するか
最終的な成果物はどうなりますか?¶
- 「分析されたレビュー」は、(トリガーを使用して)ブローカーに送り返され、データベースに保存されます。
- 悪質な言葉を含まないコメントはUIに表示され、感情は絵文字で表示されます。
実装¶
ステップ1:データベース挿入のためのトリガーの作成¶
既存のnode-server/config/200-broker.yaml
ファイルに次のトリガー構成を追加し、適用します。
node-server/config/200-broker.yamlに追加
---
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: db-insert-trigger
spec:
broker: bookstore-broker
filter:
attributes: # Trigger will filter events based on BOTH the type and badwordfilter attribute
type: moderated-comment # This is the filter that will be applied to the event, only events with the ce-type moderated-comment will be processed
badwordfilter: good # This is the filter that will be applied to the event, only events with the ce-extension badwordfilter: good will be processed
subscriber:
ref:
apiVersion: v1
kind: Service
name: node-server-svc
uri: /insert # This is the path where the event will be sent to the subscriber, see /insert in node-server code: index.js
kubectl apply -f node-server/config/200-broker.yaml
設定を適用した後、表示されるはずです。
broker.eventing.knative.dev/bookstore-broker unchanged
trigger.eventing.knative.dev/db-insert-trigger created
これまでのところ、クラスタで作成したトリガーは次のようになります。
検証
トリガーが正常に作成されたかどうかを確認するには、次のコマンドを実行します。
kubectl get triggers
トリガーが準備完了状態であることが表示されます。
NAME BROKER SUBSCRIBER_URI AGE READY REASON
db-insert-trigger bookstore-broker http://node-server-svc.default.svc.cluster.local/insert 5h32m True
sequence-trigger bookstore-broker http://sequence-kn-sequence-0-kn-channel.default.svc.cluster.local 5h30m True
log-trigger bookstore-broker http://event-display.default.svc.cluster.local 5h32m True
検証¶
さあ、魔法の時間です。すべてが自動的に接続されます。UIを操作してみてください!
- 通常のコメント:「悪質な言葉」を含まない通常のコメントを送信すると、コメントエリアに正しく表示されます。
- 「悪質な言葉」を含むコメント:攻撃的または憎悪的な発言を含むコメントはフィルタリングされ、最終的にSlackにリダイレクトされます(次のセクションで説明します)。
簡単ですよね?だからこそKnative Eventingは非常に役立ちます!Knative Eventingはサービス間の接続と通信を処理するため、各コンポーネントの開発に集中するだけで済みます。各サービスは、メッセージ配信を心配することなく、それぞれの責任に集中できます。
次のステップ¶
イベント駆動アーキテクチャを構築しました。次は、外部サービスに接続して書店アプリケーションをさらに強化します。次のセクションでは、書店がSlackワークスペースに通知を送信できるようにします!