Google Cloud Deploy 通知の使用

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

このページでは、Google Cloud Deploy サービスの通知の使用方法と、その登録方法について説明します。

Google Cloud Deploy は、2 つの目的で Pub/Sub を使用して通知を公開します。

  • ワークフロー チケット発行やテスト インフラストラクチャ用のツールなど、Google Cloud Deploy をサードパーティのツールや他の Google ツールと統合できます。

  • 追加のビジネス ロジックを使用して Google Cloud Deploy を拡張します。

利用可能なトピック

Google Cloud Deploy では、次の一連の Google Pub/Sub トピックにメッセージを公開します。

  • clouddeploy-resources

    Google Cloud Deploy コアリソース(配信パイプライン、リリース、ロールアウト、ターゲット)に対するオペレーション(作成、更新、削除)がある場合。

  • clouddeploy-operations

    Google Cloud Deploy が Skaffold 構成をレンダリングするか、ターゲット(StartSucceedFailure)にデプロイする場合。

  • clouddeploy-approvals

    • Google Cloud Deploy でロールアウトの承認(または拒否)が必要な場合。
    • ロールアウトが承認されたか拒否された場合。

Pub/Sub サブスクリプションに push または pull モデルを使用できます。

Google Cloud Deploy サービスの通知を受け取る

Google Cloud Deploy サービスの通知を受け取るには:

  1. Google Cloud Deploy API を有効にする

    Google Cloud Deploy API を有効にする

    Google Cloud Deploy API を初めて呼び出すときに、Cloud Deploy Service Agent のサービス アカウントが自動的にプロジェクトに追加されます。このサービス アカウントを使用すると、Pub/Sub を使用して Google Cloud Deploy サービスの通知を受信できます。

    サービス アカウント名の形式は次のとおりです。ここで project-number はプロジェクト番号です。

     service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
    

    それでも [IAM] ページで Cloud Deploy サービス エージェントのサービス アカウントが表示されない場合や、Pub/Sub 通知を受信できない場合は、このサービス アカウントをプロジェクトに追加します。

    1. Google Cloud コンソールで [IAM] ページを開きます。

      [IAM] ページを開く

    2. [Add] をクリックします。

    3. 次のプリンシパルを追加します。ここで、project-number はプロジェクト番号です。

      service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
      
    4. ロールとして [サービス管理] > [Cloud Deploy サービス エージェント] の順に選択します。

    5. [保存] をクリックします。

  2. Pub/Sub API を有効にします。

    Pub/Sub API を有効にする

  3. 受信する通知タイプに基づいて、Pub/Sub トピックを作成します。

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    

    Pub/Sub トピックの管理の詳細については、トピックとサブスクリプションの管理をご覧ください。

Google Cloud Deploy サービスに関する通知の登録

通知に登録する方法はいくつかあります。たとえば、メッセージをエンドポイントに push できます。また、サブスクリプションをポーリングする Python アプリを作成することもできます。

Google Cloud Deploy のサービス通知用に Pub/Sub サブスクリプションを設定する方法については、Pub/Sub サブスクライバー ガイドをご覧ください。 また、Pub/Sub クライアント ライブラリを使用すると、サブスクライバー アプリケーションをより簡単に開発できます。

フィールド値

このセクションでは、Google Cloud Deploy の Pub/Sub メッセージのフィールドに指定できる値を示します。

対象: Action

これらの通知では、Action に指定できる値は次のとおりです。

  • リソースの場合

    • Create
    • Update
    • Delete
  • オペレーションの場合:

    • Start
    • Succeed
    • Failure
  • 承認の場合:

    • Required
    • Approved
    • Rejected

対象: ResourceType

ResourceType に指定できる値は次のとおりです。

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

サンプル メッセージ

Google Cloud Deploy トピックから送信される Pub/Sub メッセージのいくつかの例を次に示します。

デリバリー パイプラインの作成

新しい deliveryPipeline の作成に対応して clouddeploy-resources に公開された Pub/Sub メッセージの例を次に示します。

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

レンダリング開始

次の例は、リリースがレンダリングされたことを通知するために、clouddeploy-operations に公開された Pub/Sub メッセージを示しています。

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

承認が必要です

次の例は、ロールアウトに承認が必要であることを通知するために clouddeploy-approvals に公開された Pub/Sub メッセージを示しています。

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

次のステップ