为 Google Kubernetes Engine (GKE) 创建触发器

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Eventarc 触发器声明您对某个事件或一系列事件感兴趣。要配置事件路由,您可以为触发器指定过滤条件,包括事件来源和目标 GKE 服务。

对您的服务的请求由以下事件类型触发:

准备工作

由于 Workload Identity 具有增强的安全属性和可管理性,因此它是从 Google Kubernetes Engine (GKE) 内运行的应用访问 Google Cloud 服务的推荐方法。它也是使用 Eventarc 转发 Cloud Run for Anthos 事件所必需的。确保您的 GKE 集群已启用 Workload Identity。

如需了解详情,请参阅使用 Workload Identity

准备创建触发器

对于以 GKE 服务为目标的每个触发器,Eventarc 会创建一个事件转发器组件。Eventarc 需要具有在 GKE 集群中安装组件和管理资源的权限。在为 GKE 目标创建 Eventarc 触发器之前,请务必完成以下任务。

启用 Eventarc API

要查看和分配 Identity and Access Management (IAM) 角色,您必须为项目启用 Eventarc API。在启用此 API 之前,您无法在控制台控制台中查看 Eventarc 角色。

gcloud services enable eventarc.googleapis.com

授予所需的用户角色

向用户授予 Eventarc Admin 角色 (roles/eventarc.admin):

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role="roles/eventarc.admin"

替换以下值:

  • PROJECT_ID:Google Cloud 项目 ID。
  • PRINCIPAL:要添加绑定的主账号。格式应为 user|group|serviceAccount:emaildomain:domain

    示例:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com

创建服务帐号

如果您还没有用户管理的服务帐号,请创建一个,并为其授予必要的角色和权限,以便 Eventarc 可以管理 GKE 目标的事件。

  1. 创建一个在创建触发器时使用的服务帐号:

    TRIGGER_SA=SA_NAME
    gcloud iam service-accounts create ${TRIGGER_SA}

    SA_NAME 替换为服务帐号的名称。该名称必须介于 6 到 30 个字符之间,且可以包含小写字母数字字符和短划线。在服务帐号创建完毕后,无法再更改其名称。

  2. 向服务帐号授予适当的角色:

    Cloud Audit Logs 事件

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/eventarc.eventReceiver"
    

    直接事件

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/eventarc.eventReceiver"
    

    Pub/Sub 消息

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${TRIGGER_SA}@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    

    PROJECT_ID 替换为您的 Google Cloud 项目 ID。您可以在 Google Cloud 控制台的信息中心页面上找到项目 ID。

  3. 如果要为直接 Cloud Storage 事件创建触发器,请将 pubsub.publisher 角色授予 Cloud Storage 服务帐号:

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/pubsub.publisher"
    

启用 GKE 目标

如需允许 Eventarc 管理 GKE 集群中的资源,请启用 GKE 目标,并将 Eventarc 服务帐号绑定到所需的角色。

  1. 为 Eventarc 启用 GKE 目标:

    gcloud eventarc gke-destinations init
    
  2. 在系统提示绑定所需角色时,输入 y

    绑定以下角色:

    • roles/compute.viewer
    • roles/container.developer
    • roles/iam.serviceAccountAdmin

使用 Google Cloud CLI 创建触发器

您可以通过运行包含必需和可选标志的 gcloud eventarc triggers create 命令来创建触发器。

Cloud Audit Logs 事件

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。为避免全球触发器导致任何性能和数据驻留问题,触发器位置应与生成事件的 Google Cloud 服务的位置匹配。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1。如需了解详情,请参阅 Eventarc 位置
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • SERVICE_NAME:Google Cloud 服务的标识符
  • METHOD_NAME:操作的标识符
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • 这些标志是必需的:
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • 如需查看 Eventarc 支持的审核日志事件列表(包括 serviceNamemethodName 值),请参阅 Eventarc 支持的事件
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目标。不支持通配符和正则表达式。请参阅确定 Cloud Audit Logs 的事件过滤条件
  • (可选)如需过滤特定资源的事件,您可以使用 --event-filters="resourceName=VALUE" 标志并指定资源的完整路径。忽略动态创建的资源的标志,系统在创建这些资源时会生成标识符。 或者,您可以使用 --event-filters-path-pattern="resourceName=VALUE" 标志并指定资源路径模式来过滤一组资源的事件。

例如:

  gcloud eventarc triggers create cal-gke-trigger \
      --location=us-central1 \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld-events \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

这会为由 storage.googleapis.com 写入的审核日志和标识为 storage.buckets.update 的操作创建名为 cal-gke-trigger 的触发器。

直接事件

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。Cloud Storage 存储桶必须与 Eventarc 触发器位于同一 Google Cloud 项目和区域或多区域中。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1。如需了解详情,请参阅 Eventarc 位置
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • EVENT_FILTER_TYPE:Cloud Storage 事件的标识符,可以是以下各项之一:
    • google.cloud.storage.object.v1.finalized:当存储桶中创建了新对象(或者现有对象被覆盖,以及创建了该对象的新实例)时发送事件
    • google.cloud.storage.object.v1.archived:在对象的当前版本被归档或被删除时发送事件。系统仅针对启用了版本控制的存储桶发送此事件。
    • google.cloud.storage.object.v1.deleted:在某个对象被永久删除时发送事件。根据存储桶的对象版本控制设置,这意味着:
      • 对于启用了版本控制的存储桶,只有当某个版本被永久删除时(而不是在对象被归档时),系统才会发送此事件。
      • 对于未启用版本控制的存储桶,当某个对象被删除或覆盖时,系统会发送此事件。
    • google.cloud.storage.object.v1.metadataUpdated:在现有对象的元数据发生更改时发送事件。
  • BUCKET 是 Cloud Storage 存储桶的全球唯一标识符。
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • 这些标志是必需的:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • 一旦创建触发器,EVENT_FILTER_TYPE 便无法修改。请创建新触发器,并删除旧触发器。
  • 事件是通过来自 Cloud Storage 的 Pub/Sub 通知传送的。针对同一存储桶设置过多的注册通知可能会耗尽存储桶的通知限制,如错误 Cloud Storage bucket ...: Pub/Sub notification limit reached 所示。存储桶最多可将 10 项通知配置设置为针对特定事件触发。请参阅 Cloud Storage 配额和限制页面,详细了解配额和限制。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目标。不支持通配符和正则表达式。
  • --service-account 标志用于指定与触发器关联的 Identity and Access Management (IAM) 服务帐号电子邮件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute

例如:

gcloud eventarc triggers create storage-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

此命令会为 Cloud Storage 存储桶 my-project-bucket 和标识为 google.cloud.storage.object.v1.finalized 的事件创建一个名为 storage-gke-trigger 的触发器。

Firebase Alerts

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • ALERT_TYPE 是 Firebase 提醒的类型,可以是以下类型之一:
    • appDistribution.inAppFeedback:测试人员在给定应用中提交应用内反馈时发送事件
    • appDistribution.newTesterIosDevice:为给定应用注册新的 iOS 测试人员设备时发送事件
    • billing.planAutomatedUpdate:在 Firebase 项目的结算方案自动更新时发送事件;例如,当某个方案因付款问题而降级时
    • billing.planUpdate:在用户修改 Firebase 项目的结算方案时发送事件;例如,当结算帐号附加到项目或与项目分离时
    • crashlytics.newAnrIssue:在应用遇到新的应用无响应 (ANR) 错误(而非任何后续相同事件)时发送事件
    • crashlytics.newFatalIssue:在应用遇到新的严重崩溃(而非任何后续相同事件)时发送事件
    • crashlytics.newNonfatalIssue:在应用遇到新的非严重错误(而非任何后续相同事件)时发送事件
    • crashlytics.regression:在应用因遇到已针对先前的应用版本标记为已解决的问题而发生崩溃时发送事件
    • crashlytics.stabilityDigest:在 Crashlytics 中出现热门问题通知时发送事件
    • crashlytics.velocity:在单个问题导致大量应用会话崩溃时发送事件
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • --location 标志必须是 global。如需了解详情,请参阅 Eventarc 位置
  • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published"--event-filters="alerttype=ALERT_TYPE" 标志是必需的。
  • (可选)您可以使用 --event-filters="appid=APP_ID" 标志并指定完全匹配项来过滤特定 Firebase 应用 ID 的事件。
  • 一旦创建触发器,事件过滤条件类型便无法修改。请创建新触发器,并删除旧触发器。
  • --service-account 标志用于指定与触发器关联的 Identity and Access Management (IAM) 服务帐号电子邮件。

例如:

gcloud eventarc triggers create firealert-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account="${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com"

此命令会为标识为 google.firebase.firebasealerts.alerts.v1.published 的事件和 crashlytics.velocity 提醒类型创建名为 firealert-gke-trigger 的触发器。

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。 或者,设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1。Eventarc 的 Firebase Realtime Database 触发器仅在以下位置提供:

    • us-central1
    • europe-west1
    • asia-southeast1

    请注意,触发器必须与 Firebase Realtime Database 实例位于同一位置。如需了解详情,请参阅 Realtime Database 位置

  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • EVENT_FILTER_TYPE:Firebase Realtime Database 事件的标识符,可以是以下类型之一:

    • google.firebase.database.ref.v1.created:在数据库中创建数据时发送事件
    • google.firebase.database.ref.v1.updated:在数据库中更新数据时发送事件
    • google.firebase.database.ref.v1.deleted:在数据库中删除数据时发送事件
    • google.firebase.database.ref.v1.written:在数据库中创建、更新或删除数据时发送事件
  • INSTANCE:单个数据库实例,运算符可以是下列其中一项:

    • 等于;例如 --event-filters="instance=INSTANCE"
    • 路径模式;例如 --event-filters-path-pattern="instance=INSTANCE"。如需了解详情,请参阅了解路径模式
  • REF:数据库实例中的路径,当在该路径或其任何子路径中创建、更新或删除数据时,您希望从该路径接收事件。

  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID。

注意:

  • 这些标志是必需的:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE"--event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • 一旦创建触发器,事件过滤条件类型便无法修改。请创建新触发器,并删除旧触发器。
  • --service-account 标志用于指定与触发器关联的 Identity and Access Management (IAM) 服务帐号电子邮件。

例如:

gcloud eventarc triggers create rd-gke-trigger \
    --location=us-central1 \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

此命令会为标识为 google.firebase.database.ref.v1.created 的事件创建一个名为 rd-gke-trigger 的触发器。

Firebase Remote Config

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • --location 标志必须是 global。如需了解详情,请参阅 Eventarc 位置
  • --event-filters 标志是必需的且类型必须是 google.firebase.remoteconfig.remoteConfig.v1.updated。当更新 Remote Config 模板时,系统会发送事件。
  • 一旦创建触发器,事件过滤条件类型便无法修改。请创建新触发器,并删除旧触发器。
  • --service-account 标志用于指定与触发器关联的 Identity and Access Management (IAM) 服务帐号电子邮件。

例如:

gcloud eventarc triggers create rc-gke-trigger \
    --location=global \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

此命令会为标识为 google.firebase.remoteconfig.remoteConfig.v1.updated 的事件创建一个名为 rc-gke-trigger 的触发器。

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • --location 标志必须是 global。如需了解详情,请参阅 Eventarc 位置
  • --event-filters 标志是必需的且类型必须是 google.firebase.testlab.testMatrix.v1.completed。当 TestMatrix 完成时,系统会发送事件。
  • 一旦创建触发器,事件过滤条件类型便无法修改。请创建新触发器,并删除旧触发器。
  • --service-account 标志用于指定与触发器关联的 Identity and Access Management (IAM) 服务帐号电子邮件。

例如:

gcloud eventarc triggers create tl-gke-trigger \
    --location=global \
    --destination-gke-cluster=gke-events-cluster \
    --destination-gke-location=us-central1-a \
    --destination-gke-namespace=default \
    --destination-gke-service=helloworld-events \
    --destination-gke-path=/ \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

此命令会为标识为 google.firebase.testlab.testMatrix.v1.completed 的事件创建一个名为 tl-gke-trigger 的触发器。

Pub/Sub 消息(现有主题)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。为避免全球触发器导致任何性能和数据驻留问题,触发器位置应与生成事件的 Google Cloud 服务的位置匹配。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1。如需了解详情,请参阅 Eventarc 位置
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • TOPIC_ID:现有 Pub/Sub 主题的 ID。主题必须与触发器位于同一项目中。
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com

注意:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" 标志是必需的。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目标。不支持通配符和正则表达式。
  • --transport-topic 标志用于指定现有 Pub/Sub 主题的 ID 或其完全限定标识符。
  • 默认情况下,为 Eventarc 创建的 Pub/Sub 订阅会持续存在(无论其活跃状态如何),并且不会过期。如需更改非活跃状态持续时间,请参阅管理订阅

例如:

  gcloud eventarc triggers create pubsub-gke-trigger-existing \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

这会为 projects/${PROJECT_ID}/topics/${TOPIC_ID} 标识的 Pub/Sub 主题创建一个名为 pubsub-gke-trigger-existing 的触发器。

Pub/Sub 消息(新 主题)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
    --destination-gke-location=DESTINATION_GKE_LOCATION \
    --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
    --destination-gke-service=DESTINATION_GKE_SERVICE \
    --destination-gke-path=DESTINATION_GKE_PATH \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=TRIGGER_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

替换以下内容:

  • TRIGGER:触发器的 ID 或完全限定标识符。
  • LOCATION:Eventarc 触发器的位置。为避免全球触发器导致任何性能和数据驻留问题,触发器位置应与生成事件的 Google Cloud 服务的位置匹配。或者,您可以设置 eventarc/location 属性;例如 gcloud config set eventarc/location us-central1。如需了解详情,请参阅 Eventarc 位置
  • DESTINATION_GKE_CLUSTER:运行接收事件的目标 GKE 服务的 GKE 集群的名称。
  • DESTINATION_GKE_LOCATION:目标 GKE 服务所在的位置。如果未指定,系统将假定服务与触发器位于同一区域。如需了解详情,请参阅 Cloud Run for Anthos on Google Cloud 位置
  • DESTINATION_GKE_NAMESPACE:目标 GKE 服务在其中运行的命名空间。如果未指定,系统会使用 default 命名空间。
  • DESTINATION_GKE_SERVICE:接收触发器的事件的 GKE 服务名称。该服务可以位于任何 GKE 支持位置,无需与触发器位于同一位置。但是,该服务必须与触发器位于同一项目中,并在事件生成时,接收作为 HTTP POST 请求发送到其根网址路径 (/) 的事件。
  • (可选)DESTINATION_GKE_PATH:您在目标 GKE 服务上指定的相对路径,触发器的事件应发送到该路径。例如://routerouteroute/subroute
  • TRIGGER_SERVICE_ACCOUNT:与触发器关联并且您之前授予了 Eventarc 所需的特定角色的 IAM 服务帐号电子邮件地址。例如:$TRIGGER_SA@PROJECT_ID.iam.gserviceaccount.com
  • PROJECT_ID:您的 Google Cloud 项目 ID

注意:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" 标志是必需的。
  • 每个触发器可以有多个事件过滤条件,在一个 --event-filters=[ATTRIBUTE=VALUE,...] 标志内以英文逗号分隔,您也可以重复使用该标志来添加更多过滤条件。只有符合所有过滤条件的事件会被发送到目标。不支持通配符和正则表达式。
  • 默认情况下,为 Eventarc 创建的 Pub/Sub 订阅会持续存在(无论其活跃状态如何),并且不会过期。如需更改非活跃状态持续时间,请参阅管理订阅

例如:

  gcloud eventarc triggers create pubsub-gke-trigger-new \
      --location=us-central1 \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --service-account=${TRIGGER_SA}@${PROJECT_ID}.iam.gserviceaccount.com

这会创建一个新的 Pub/Sub 主题和一个名为 pubsub-gke-trigger-new 的触发器。

使用 Google Cloud 控制台创建触发器

您可以通过控制台创建触发器。如需了解详情,请参阅使用控制台创建触发器

使用 Google Cloud CLI 列出触发器

您可以通过列出 Eventarc 触发器来确认已创建触发器:

gcloud eventarc triggers list --location=LOCATION

LOCATION 替换为 Eventarc 触发器位置的 ID 或完全限定标识符,例如 us-central1

如需详细了解如何管理 Eventarc 触发器,请参阅管理触发器

后续步骤

要开始使用 Eventarc for GKE,请参阅快速入门