了解如何在 Cloud Run for Anthos on Google Cloud 中部署服务,然后通过 Pub/Sub 创建事件并将其发送到该服务。
准备工作
为完成此任务,您必须拥有一个事件代理,并知道它正在哪个命名空间中运行。了解如何配置 Events for Cloud Run for Anthos 以及创建事件代理。
如果您正在运行事件代理,则可以运行以下命令来查看 Kubernetes 命名空间:
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 是事件代理所在的命名空间。
当您看到服务网址时,表示已成功部署容器映像。
为 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 是事件代理所在的命名空间。