LoginSignup
2
4

More than 1 year has passed since last update.

Knative Eventingでイベント駆動なアプリケーションを体験する

Posted at

Knativeとは

KnativeはKubernetes上でサーバーレスなアプリケーションを構築するためのプラットフォームです

Knativeの構築

サクッと試すなら、こちらの記事を参考にしてください

Knative Eventingについて

Knativeで単純にアプリケーションをデプロイ・実行するだけであればServingのみで実現できます
Eventingを使用することで、何らかのイベントをトリガーにアプリケーションを呼び出す、いわゆるイベント駆動でアプリケーションを実行することができるようになります

Eventingを構築する主なコンポーネントは以下です

  • Sources:イベントをBrokerに発行する(Pub/Subでいうパブリッシャー)
  • Brokers:イベントのハブとなるコンポーネント
  • Triggers:Brokerに入ってくるイベントのフィルタリング
  • Sinks:イベントを受信する(Pub/Subでいうサブスクライバー)

image.png
EventingはCloudEventsに準拠してます

KonKでKnativeを構築すると、お試しで使えるBrokerが入っているので、これを使って試していきます

$ kn broker list
NAME             URL                                                                               AGE   CONDITIONS   READY   REASON
example-broker   http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker   33m   5 OK / 5     True

Sourceの作成

ここを参考にイベントを送信するSourceを作ります

CloudEvents PlayerというサンプルアプリケーションにBrokerのURLを指定して作成

kn service create cloudevents-player \
--image ruromero/cloudevents-player:latest \
--env BROKER_URL=http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker

$ kn service list
NAME                 URL                                                  LATEST                     AGE   CONDITIONS   READY   REASON
cloudevents-player   http://cloudevents-player.default.127.0.0.1.nip.io   cloudevents-player-00001   45s   3 OK / 3     True

http://cloudevents-player.default.127.0.0.1.nip.ioにアクセスしてイベントを送信することができます
ただ、Brokerにイベントが流れているだけで特に何も起きません
image.png

Triggerの作成

Sinkに先程作成したCloudEvents Playerを指定してTriggerを作ります
KnativeのServiceがSource・Sinkの両方に指定できることがわかります

$ kn trigger create cloudevents-trigger --sink cloudevents-player  --broker example-broker

$ kn trigger list
NAME                  BROKER           SINK                      AGE   CONDITIONS   READY   REASON
cloudevents-trigger   example-broker   ksvc:cloudevents-player   3s    5 OK / 5     True

これでイベントを流すと先程と違い、イベントの受信を確認できます
image.png
イベントの流れ

  1. Source(cloudevents-player)
  2. Broker(example-broker)
  3. Trigger(cloudevents-trigger)
  4. Sink(cloudevents-player)

また、Triggerを作成する際にfilterを指定することで、特定のイベントのみ受信することもできます

$ kn trigger create cloudevents-player-filter --sink cloudevents-player  --broker example-broker --filter type=some-type

最後に

Eventingについてより詳細なドキュメントはこちら
https://knative.dev/docs/eventing/

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4