Cloud Run for Anthos on Google Cloud にサービスをデプロイし、Pub/Sub からそのサービスにイベントを作成して送信する方法について説明します。
始める前に
このタスクを完了するには、イベント ブローカーを使用し、それが実行されている名前空間を把握する必要があります。Cloud Run for Anthos 用にイベントを構成し、イベント ブローカーを作成する方法を学習します。
イベント ブローカーが実行されている場合は、次のコマンドを実行して Kubernetes Namespace を表示できます。
kubectl get brokers -n NAMESPACE
Cloud Run for Anthos イベント レシーバー サービスをデプロイする
イベント ブローカーからイベントを受信する Cloud Run for Anthos サービスをデプロイします。
Cloud Run for Anthos サービスをデプロイするには:
リポジトリのクローンを作成します。
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/pubsub
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/pubsub
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/pubsub
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/pubsub
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/pubsub
コンテナをビルドして、Cloud Build にアップロードします。
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
ここで、CLOUD_RUN_CONTAINER_FILENAME はコンテナのファイル名です。
コンテナ イメージを Cloud Run for Anthos にデプロイします。
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --namespace=NAMESPACE \ --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
サービス URL が表示されたら、デプロイが正常に完了しています。
Pub/Sub のトリガーを作成する
Pub/Sub トピックを作成します。
gcloud pubsub topics create TOPIC_NAME
--parameters topic=
TOPIC_NAME と--target-service=
CLOUD_RUN_SERVICE_NAME でトリガーを作成します。gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=google.cloud.pubsub.topic.v1.messagePublished \ --source=CloudPubSubSource \ --parameters topic=TOPIC_NAME
ここで、NAMESPACE はイベント ブローカーと同じ名前空間、TOPIC-NAME は作成した Pub/Sub トピックの名前、CLOUD_RUN_SERVICE_NAME は Cloud Run for Anthos のイベント レシーバー サービスの名前です。
省略可:
gcloud
コマンドライン ツールを使用してトリガーが動作していることを確認します。gcloud beta events triggers list \ --target-service 'CLOUD_RUN_SERVICE_NAME' \ --namespace NAMESPACE
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
出力は次のようになります。
TRIGGER EVENT TYPE TARGET trigger-name google.cloud.pubsub.topic.v1.messagePublished cloud-run-service
イベントを生成する
Pub/Sub トピックにメッセージを公開します。
gcloud pubsub topics publish TOPIC_NAME \ --message "World"
Cloud Run for Anthos サービスの受信側のログを調べて、公開されたイベントを確認します。
kubectl logs \ --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \ -c user-container \ -n NAMESPACE \ --tail=100
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
ログに、次のようなエントリが記録されます。
Hello World! ID: 961750303502725
クリーンアップ
定期的な課金が発生しないように、このチュートリアルで作成したリソースを削除します。
次のように入力して、トリガーを削除します。
gcloud beta events triggers delete TRIGGER-NAME \ --namespace NAMESPACE
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。