Google Kubernetes Engine(GKE)のトリガーを作成する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Eventarc トリガーは、特定のイベントまたは一連のイベントに関心があることを宣言します。イベント ルーティングを構成するには、トリガーのフィルタ(イベントソースとターゲット Google Kubernetes Engine サービスを含む)を指定します。これには、GKE クラスタで実行される限定公開および一般公開の Cloud Run for Anthos サービスが含まれます。

サービスに対するリクエストは、次のイベントタイプによってトリガーされます。

始める前に

宛先サービスが実行されている GKE クラスタで Workload Identity を有効にする必要があります。Workload Identity は、イベント フォワーダーを適切に設定するために必要です。セキュリティのプロパティと管理性が優れているため、GKE 内で実行されているアプリケーションから Google Cloud サービスにアクセスする場合におすすめの方法です。

GKE ターゲットに Eventarc イベントを送信するアーキテクチャ

Workload Identity

GKE で実行されるアプリケーションで、Google Cloud APIs へのアクセスが必要になる場合があります。Workload Identity では、GKE クラスタ内の Kubernetes サービス アカウントが IAM サービス アカウントとして機能します。構成された Kubernetes サービス アカウントを使用する Pod は、Google Cloud APIs にアクセスするときに IAM サービス アカウントとして自動的に認証されます。Workload Identity を使用すると、クラスタ内のアプリケーションごとに詳細に設定した個別の ID と認可を割り当てることができます。Eventarc トリガーのサービス アカウントに特定の権限を付与する必要があります。このドキュメントのサービス アカウントの作成をご覧ください。

Workload Identity は、Eventarc を使用して Cloud Run for Anthos イベントを転送する場合にも必要です。GKE クラスタで Workload Identity を有効にして構成する方法については、Workload Identity の使用をご覧ください。

イベント フォワーダー

Eventarc のイベント フォワーダーが Eventarc から新しいイベントを pull し、GKE の宛先に転送します。このコンポーネントは、Pub/Sub トランスポート レイヤと GKE サービスの間の仲介役として機能します。これにより、設定やメンテナンスが簡素化されます。これは既存のサービスで動作するだけでなく、シグナリング サービス(フルマネージド クラスタ外に公開されていないサービスを含む)もサポートします。ネットワーク レベルでは、GKE サービスでイベントを受信するために、外部トラフィックに対してサービスを開く必要はありません。すべてのイベントは、同じ GKE クラスタ内に存在する送信元から配信されます。

イベント フォワーダーのライフサイクルは Eventarc によって管理されるため、誤ってイベント フォワーダーを削除すると、Eventarc はこのコンポーネントを復元します。

GKE の宛先を参照するトリガーごとに、イベント フォワーダー(明示的に構成された gke-forwarder Pod)は次の処理を行います。

  1. Pub/Sub API を使用して、トリガー トランスポート(Pub/Sub トピックとサブスクリプション)への StreamingPull 接続を開き、利用可能になったイベントを受信します。

  2. イベントを正しい CloudEvents 形式に変換してエンコードし、HTTP POST リクエストとしてターゲットの GKE サービスに配信します。

Eventarc サービス エージェントには、gke-forwarder インスタンスを実行して定期的に更新する権限が必要です。この権限は、プロジェクトごとに 1 回付与する必要があります。詳細については、このドキュメントの GKE の宛先を有効にするをご覧ください。

トリガーを作成する準備

Eventarc は、GKE サービスをターゲットとするトリガーごとにイベント フォワーダー コンポーネントを作成します。Eventarc には、コンポーネントをインストールして GKE クラスタ内のリソースを管理する権限が必要です。GKE の宛先に Eventarc トリガーを作成する前に、次のタスクを完了してください。

Eventarc API の有効化

Identity and Access Management(IAM)のロールを表示して割り当てるには、プロジェクトで Eventarc API を有効にする必要があります。API を有効にするまで、Google Cloud コンソールで Eventarc のロールは表示されません。

gcloud services enable eventarc.googleapis.com

必要なユーザー ロールを付与する

Eventarc 管理者ロール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:email または domain:domain にする必要があります。

    例: user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.com、または domain: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 に置き換えます。プロジェクト ID は、Google Cloud コンソールの [ダッシュボード] ページで確認できます。

  3. Cloud Storage の直接イベントのトリガーを作成する場合は、Cloud Storage サービス アカウントに pubsub.publisher ロールを付与します。

    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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • (省略可)DESTINATION_GKE_PATH: 宛先の GKE サービスでトリガーのイベントの送信先として指定する相対パス。例: //routerouteroute/subroute
  • SERVICE_NAME: Google Cloud サービスの識別子
  • METHOD_NAME: オペレーションの ID
  • 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"
  • トリガーの作成後に --event-filters="type=google.cloud.audit.log.v1.written" を変更することはできません。別のイベントタイプには、新しいトリガーを作成する必要があります。
  • serviceNamemethodName の値など、Eventarc でサポートされている監査ログイベントのリストについては、Eventarc でサポートされるイベントをご覧ください。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。 Cloud Audit Logs のイベント フィルタの決定をご覧ください。
  • --event-filters="resourceName=VALUE" フラグを使用してリソースの完全なパスを指定することで、特定のリソースのイベントをフィルタリングできます。動的に作成され、作成時に ID が生成されるリソースの場合は、このフラグを省略します。また、--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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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-bucketgoogle.cloud.storage.object.v1.finalized として識別されるイベントに対して storage-gke-trigger というトリガーを作成します。

Firebase アラート

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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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: 1 つの問題が原因で多数のアプリ セッションがクラッシュしたときにイベントが送信されます。
  • 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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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 でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された 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 コンソールから作成できます。詳しくは、Google Cloud コンソールを使用してトリガーを作成するをご覧ください。

Google Cloud CLI を使用してトリガーを一覧表示する

トリガーの作成を確認するには、Eventarc トリガーを一覧表示します。

gcloud eventarc triggers list --location=LOCATION

LOCATION は、Eventarc トリガーの場所の ID または完全修飾 ID に置き換えます。例: us-central1

Eventarc トリガーの管理の詳細については、トリガーの管理をご覧ください。

次のステップ

Eventarc for GKE の使用を開始するには、クイックスタートをご覧ください。