検出性を向上させるためのEventTypeの自動作成¶
フラグ名: eventtype-auto-create
ステージ: アルファ、デフォルトで無効
追跡issue: #7044
ペルソナ: 開発者
概要¶
eventtype-auto-creation
機能により、Knative BrokerおよびChannelの実装によって受信およびイングレスされるEventTypeを自動作成できます。
このオプトイン機能を利用するには、config-features
でeventtype-auto-create
フラグをenabled
に設定して有効にする必要があります。
apiVersion: v1
kind: ConfigMap
metadata:
name: config-features
namespace: knative-eventing
data:
eventtype-auto-create: "enabled"
...
この機能を有効にすると、Broker
またはChannel
APIとやり取りするアプリケーションコードに沿ってYAMLマニフェストとして手動で作成する代わりに、ブローカー/チャネルイングレスでEventType
を無料で取得できます。
例¶
Brokerの作成¶
機能が動作しているかを確認するには、単純なブローカーを作成します
kn broker create my-broker
-
次の例を使用してYAMLファイルを作成します
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: namespace: default name: my-broker
-
コマンドを実行してYAMLファイルを適用します
ここで、kubectl apply -f <filename>.yaml
<filename>
は前の手順で作成したファイルの名前です。
Brokerへのイベントの生成¶
自動作成機能は、処理されたイベントによってトリガーされます。したがって、機能を検証するには、目的のタイプでサンプルイベントを送信する必要があります。これはいくつかの方法で実現できます。以下に、クラスター内のkn-plugin-event
およびcURL
コンテナを使用した2つの例を示します。
以下は、開発者の生産性を向上させるために、kn
CLIでイベントを送信する例です。kn-plugin-event
プラグインは、Homebrewでインストールするか、GitHubリリースから直接ダウンロードできます。詳細については、プラグインのインストール手順を参照してください。
-
kn event
プラグインのセットアップbrew install knative-extensions/kn-plugins/event
-
イベントの送信
kn event send \ --to Broker:eventing.knative.dev/v1:my-broker\ --type com.corp.integration.warning \ -f message="There might be a problem"
クラスター内のcurl
を介してイベントを送信できます。
kubectl run curl --image=docker.io/curlimages/curl --rm=true --restart=Never -ti \
-- -X POST -v \
-H "content-type: application/json" \
-H "ce-specversion: 1.0" \
-H "ce-source: my/curl/command" \
-H "ce-type: my.demo.event" \
-H "ce-id: 6cf17c7b-30b1-45a6-80b0-4cf58c92b947" \
-d '{"name":"Knative Demo"}' \
http://broker-ingress.knative-eventing.svc.cluster.local/default/my-broker
curl
HTTP POSTリクエストの一部としてイベントを作成する必要があるため、より複雑です。
イベントの検出¶
2つのイベントを生成した後、eventtype-auto-creation
機能に基づいて、システム内で検出可能なイベントが存在するはずです。
k get eventtypes.eventing.knative.dev -A
NAMESPACE NAME TYPE SOURCE SCHEMA BROKER DESCRIPTION READY REASON
default <...> com.corp.integration.warning kn-event/v1.9.0 my-broker True
default <...> my.demo.event my/curl/command my-broker True
結論と推奨事項¶
この機能がないと、システム内に2つのEventType
インスタンスが表示されないため、消費のためにイベントの検出性が向上しました。ただし、このオプトイン機能は自動イベント作成に便利ですが、この自動作成機能に依存するのではなく、アプリケーションデプロイメント
が生成するすべてのイベントについて、実際のEventType
マニフェストをGitOpsパイプラインの一部として作成することを強く推奨します。