2.3. ping ソースの作成
ping ソースは、一定のペイロードを使用して ping イベントをイベントコンシューマーに定期的に送信するために使用されるイベントソースです。ping ソースを使用すると、タイマーと同様にイベントの送信をスケジュールできます。
2.3.1. Web コンソールを使用した ping ソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Knative Eventing がクラスターにインストールされると、Web コンソールを使用して ping ソースを作成できます。OpenShift Container Platform Web コンソールを使用すると、イベントソースを作成するための合理的で直感的なユーザーインターフェイスが提供されます。
前提条件
- OpenShift Container Platform Web コンソールにログインしている。
 - OpenShift Serverless Operator、Knative Serving、および Knative Eventing がクラスターにインストールされている。
 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
 
手順
ping ソースが機能していることを確認するには、受信メッセージをサービスのログにダンプする単純な Knative サービスを作成します。
- 
									+Add 
YAML に移動します。  サンプル YAML をコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
 
- 
									+Add 
 直前の手順で作成したサービスと同じ namespace、またはイベントの送信先となる他のシンクと同じ namespace に ping ソースを作成します。
- 
									+Add 
Event Source に移動します。Event Sources ページが表示されます。  - オプション: イベントソースに複数のプロバイダーがある場合は、Providers 一覧から必要なプロバイダーを選択し、プロバイダーから利用可能なイベントソースをフィルターします。
 Ping Source を選択してから Create Event Source をクリックします。Create Event Source ページが表示されます。
注記Form view または YAML view を使用して PingSource 設定を設定し、これらのビューを切り換えることができます。ビューの切り替え時に、データは永続化されます。
- 
									Schedule の値を入力します。この例では、値は 
*/2 * * * *であり、2 分ごとにメッセージを送信する PingSource を作成します。 - オプション: Data の値を入力できます。これはメッセージのペイロードです。
 Target セクションで、イベントシンクを選択します。これは Resource または URI のいずれかです。
- 
											Resource を選択して、チャネル、ブローカー、またはサービスをイベントソースのシンクとして使用します。この例では、前の手順で作成した 
event-displayサービスをターゲット Resource として使用します。 - URI を選択して、イベントのルーティング先となる URI (Uniform Resource Identifier) を指定します。
 
- 
											Resource を選択して、チャネル、ブローカー、またはサービスをイベントソースのシンクとして使用します。この例では、前の手順で作成した 
 - Create をクリックします。
 
- 
									+Add 
 
検証
Topology ページを表示して、ping ソースが作成され、シンクに接続されていることを確認できます。
- Topology に移動します。
 ping ソースおよびシンクを表示します。
イベント表示サービスを Web ブラウザーで表示します。Web UI に ping ソースイベントが表示されるはずです。
ping ソースの削除
- Topology ビューに移動します。
 - API サーバーソースを右クリックし、Delete Ping Source を選択します。
 
2.3.2. Knative CLI を使用した ping ソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
					kn source ping create コマンドを使用し、Knative (kn) CLI を使用して ping ソースを作成できます。Knative CLI を使用してイベントソースを作成すると、YAML ファイルを直接変更するよりも合理化された直感的なユーザーインターフェイスが提供されます。
				
前提条件
- OpenShift Serverless Operator、Knative Serving、および Knative Eventing がクラスターにインストールされている。
 - 
							Knative (
kn) CLI がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
 - 
							オプション: この手順の検証手順を使用する場合は、OpenShift CLI (
oc) がインストールされている。 
手順
ping ソースが機能していることを確認するには、受信メッセージをサービスのログにダンプする単純な Knative サービスを作成します。
kn service create event-display \ --image quay.io/openshift-knative/showcase$ kn service create event-display \ --image quay.io/openshift-knative/showcaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要求する必要のある ping イベントのセットごとに、ping ソースをイベントコンシューマーと同じ namespace に作成します。
kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-display$ kn source ping create test-ping-source \ --schedule "*/2 * * * *" \ --data '{"message": "Hello world!"}' \ --sink ksvc:event-displayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力し、出力を検査して、コントローラーが正しくマップされていることを確認します。
kn source ping describe test-ping-source
$ kn source ping describe test-ping-sourceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
検証
シンク Pod のログを確認して、Kubernetes イベントが Knative イベントシンクに送信されていることを確認できます。
デフォルトでは、Knative サービスは、60 秒以内にトラフィックを受信しないと Pod を終了します。このガイドの例では、2 分ごとにメッセージを送信する ping ソースを作成します。そのため、各メッセージは新たに作成される Pod で確認されるはずです。
作成された新規 Pod を監視します。
watch oc get pods
$ watch oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ctrl+C を使用して Pod の監視をキャンセルし、作成された Pod のログを確認します。
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
ping ソースの削除
ping ソースを削除します。
kn delete pingsources.sources.knative.dev <ping_source_name>
$ kn delete pingsources.sources.knative.dev <ping_source_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
2.3.2.1. Knative CLI シンクフラグ リンクのコピーリンクがクリップボードにコピーされました!
						Knative (kn) CLI を使用してイベントソースを作成する場合は、--sink フラグを使用して、そのリソースからイベントが送信されるシンクを指定できます。シンクは、他のリソースから受信イベントを受信できる、アドレス指定可能または呼び出し可能な任意のリソースです。
					
						以下の例では、サービスの http://event-display.svc.cluster.local をシンクとして使用するシンクバインディングを作成します。
					
シンクフラグを使用したコマンドの例
kn source binding create bind-heartbeat \ --namespace sinkbinding-example \ --subject "Job:batch/v1:app=heartbeat-cron" \ --sink http://event-display.svc.cluster.local \ --ce-override "sink=bound"
$ kn source binding create bind-heartbeat \
  --namespace sinkbinding-example \
  --subject "Job:batch/v1:app=heartbeat-cron" \
  --sink http://event-display.svc.cluster.local \ 
  --ce-override "sink=bound"
- 1
 http://event-display.svc.cluster.localのsvcは、シンクが Knative サービスであることを判別します。他のデフォルトのシンクの接頭辞には、channelおよびbrokerが含まれます。
2.3.3. YAML を使用した ping ソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
					YAML ファイルを使用して Knative リソースを作成する場合は、宣言的 API を使用するため、再現性の高い方法でイベントソースを宣言的に記述できます。YAML を使用して Serverless ping ソースを作成するには、PingSource オブジェクトを定義する YAML ファイルを作成し、oc apply を使用してこれを適用する必要があります。
				
PingSource オブジェクトの例
前提条件
- OpenShift Serverless Operator、Knative Serving、および Knative Eventing がクラスターにインストールされている。
 - 
							OpenShift CLI (
oc) がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
 
手順
ping ソースが機能していることを確認するには、受信メッセージをサービスのログにダンプする単純な Knative サービスを作成します。
サービス YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスを作成します。
oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
要求する必要のある ping イベントのセットごとに、ping ソースをイベントコンシューマーと同じ namespace に作成します。
ping ソースの YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ping ソースを作成します。
oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
以下のコマンドを入力し、コントローラーが正しくマップされていることを確認します。
oc get pingsource.sources.knative.dev <ping_source_name> -oyaml
$ oc get pingsource.sources.knative.dev <ping_source_name> -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
検証
シンク Pod のログを確認して、Kubernetes イベントが Knative イベントシンクに送信されていることを確認できます。
デフォルトでは、Knative サービスは、60 秒以内にトラフィックを受信しないと Pod を終了します。このガイドの例では、新たに作成される Pod で各メッセージが確認されるように 2 分ごとにメッセージを送信する PingSource を作成します。
作成された新規 Pod を監視します。
watch oc get pods
$ watch oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ctrl+C を使用して Pod の監視をキャンセルし、作成された Pod のログを確認します。
oc logs $(oc get pod -o name | grep event-display) -c user-container
$ oc logs $(oc get pod -o name | grep event-display) -c user-containerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
ping ソースの削除
ping ソースを削除します。
oc delete -f <filename>
$ oc delete -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc delete -f ping-source.yaml
$ oc delete -f ping-source.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow