Pub/Sub からイベントを受信する

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 サービスをデプロイするには:

  1. リポジトリのクローンを作成します。

    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
    
  2. コンテナをビルドして、Cloud Build にアップロードします。

    gcloud builds submit \
      --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
    

    ここで、CLOUD_RUN_CONTAINER_FILENAME はコンテナのファイル名です。

  3. コンテナ イメージを 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 のトリガーを作成する

  1. Pub/Sub トピックを作成します。

    gcloud pubsub topics create TOPIC_NAME
    
  2. --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 のイベント レシーバー サービスの名前です。

  3. 省略可: 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
    

イベントを生成する

  1. Pub/Sub トピックにメッセージを公開します。

    gcloud pubsub topics publish TOPIC_NAME \
      --message "World"
    
  2. 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
    

クリーンアップ

定期的な課金が発生しないように、このチュートリアルで作成したリソースを削除します。

  1. 次のように入力して、トリガーを削除します。

    gcloud beta events triggers delete TRIGGER-NAME \
        --namespace NAMESPACE
    

    ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。