从 Cloud Audit Logs 接收事件

了解如何在 Cloud Run for Anthos on Google Cloud 中部署服务,然后通过 Cloud Audit Logs 创建事件并将其发送到该服务。

准备工作

为完成此任务,您必须拥有一个事件代理,并知道它正在哪个命名空间中运行。了解如何配置 Events for Cloud Run for Anthos 并创建事件代理

如果您正在运行事件代理,则可以运行以下命令来查看 Kubernetes 命名空间

kubectl get brokers -n NAMESPACE

部署 Cloud Run for Anthos on Google Cloud 事件接收器服务

部署可从事件代理接收事件的 Cloud Run for Anthos on Google Cloud 服务。

  1. 克隆代码库:

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    
  2. 构建容器并将其上传到 Cloud Build:

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

    其中 CLOUD_RUN_CONTAINER_NAME 是容器的文件名。

  3. 将容器映像部署到 Cloud Run for Anthos on Google Cloud:

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    其中 NAMESPACE 是与您的事件代理相同的命名空间。

    当您看到服务网址时,表示已成功部署服务。

创建 Cloud Audit Logs 触发器

  1. 在事件代理所在的命名空间中创建触发器:

    gcloud beta events triggers create TRIGGER_NAME \
       --namespace NAMESPACE \
       --target-service=CLOUD_RUN_SERVICE_NAME \
       --type=google.cloud.audit.log.v1.written \
       --parameters serviceName=pubsub.googleapis.com \
       --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
    

    在此示例中,触发器会过滤 methodName 条目等于 google.pubsub.v1.Publisher.CreateTopic 的 Cloud Audit Logs 条目。如需详细了解过滤选项,请参阅 AuditLog 格式设置

  2. 60 秒后,验证触发器是否正常运行:

    gcloud beta events triggers list \
       --target-service CLOUD_RUN_SERVICE_NAME \
       --namespace NAMESPACE
    

    其中 NAMESPACE 是与您的事件代理相同的命名空间。

    输出内容类似如下:

    TRIGGER                EVENT TYPE                          TARGET
    trigger-name           google.cloud.audit.log.v1.written   cloud-run-service
    

生成事件

  1. 通过创建 Pub/Sub 主题生成事件:

    gcloud pubsub topics create TOPIC_NAME
    
  2. 检查 Cloud Run 服务是否已接收事件:

    kubectl logs \
       --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
       -c user-container \
       -n NAMESPACE \
       --tail=200
    

    其中 NAMESPACE 是与您的事件代理相同的命名空间。

    输出内容类似如下:

      [...]
      [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4
      [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
      [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads
      [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2
      [...]
    

清理

删除在本教程中创建的资源,以避免重复收费。

  1. 如需删除触发器,请输入:

    gcloud beta events triggers delete TRIGGER_NAME \
        --namespace NAMESPACE
    

    其中 NAMESPACE 是与您的事件代理相同的命名空间。

  2. 删除 Pub/Sub 主题:

    gcloud pubsub topics delete TOPIC_NAME