このページでは、Cloud Deploy サービス通知を使用する方法(サブスクライブする方法など)について説明します。
Cloud Deploy は、次の 2 つの目的で Pub/Sub を使用して通知を公開します。
Cloud Deploy をサードパーティ ツールや、ワークフロー チケットングやテスト インフラストラクチャのツールなどの他の Google ツールと統合できるようにするため。
追加のビジネス ロジックを使用して Cloud Deploy を拡張します。
使用可能なトピック
Cloud Deploy では、次の一連の Google Pub/Sub トピックにメッセージを公開します。
clouddeploy-resources
Cloud Deploy のコアリソース(自動化、カスタム ターゲット タイプ、デリバリー パイプライン、ジョブ実行、リリース、ロールアウト、ターゲット)に対するオペレーション(作成、更新、削除)がある場合。
clouddeploy-operations
- Cloud Deploy で Skaffold 構成がレンダリングされる場合。
- Cloud Deploy がターゲット(
Start
、Succeed
、Failure
、Terminated
(ジョブ実行)、Cancelled
(ロールアウト))にデプロイする場合。
clouddeploy-approvals
- Cloud Deploy でロールアウトの承認(または拒否)が必要な場合。
- ロールアウトが承認されたか拒否された場合。
clouddeploy-advances
- Cloud Deploy ロールアウトが 1 つのフェーズから次のフェーズに進んだとき。
- ロールアウトを進めることができる場合。
Pub/Sub サブスクリプションに push または pull モデルを使用できます。
Cloud Deploy サービスに関する通知を受け取る
Cloud Deploy サービス通知を受け取るには:
Cloud Deploy API を有効にします。
Cloud Deploy サービス エージェント サービス アカウントは、Cloud Deploy API を初めて呼び出すときにプロジェクトに自動的に追加されます。このサービス アカウントを使用すると、Pub/Sub を使用して Cloud Deploy サービス通知を受け取ることができます。
サービス アカウント名の形式は次のとおりです。ここで project-number はプロジェクト番号です。
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
それでも [IAM] ページで Cloud Deploy サービス エージェントのサービス アカウントが表示されない場合や、Pub/Sub 通知を受信できない場合は、このサービス アカウントをプロジェクトに追加します。
Google Cloud コンソールで IAM ページを開きます。
[追加] をクリックします。
次のプリンシパルを追加します。ここで、project-number はプロジェクト番号です。
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
ロールとして [サービス管理] > [Cloud Deploy サービス エージェント] の順に選択します。
[保存] をクリックします。
Pub/Sub API を有効にします。
受信する通知の種類に応じて、Pub/Sub トピックを作成します。
gcloud pubsub topics create clouddeploy-resources gcloud pubsub topics create clouddeploy-operations gcloud pubsub topics create clouddeploy-approvals gcloud pubsub topics create clouddeploy-advances
Pub/Sub トピックの管理の詳細については、トピックとサブスクリプションの管理をご覧ください。
Cloud Deploy サービス通知をサブスクライブする
通知に登録する方法はいくつかあります。たとえば、メッセージをエンドポイントに push できます。また、サブスクリプションをポーリングする Python アプリを作成することもできます。
Cloud Deploy サービス通知用の Pub/Sub サブスクリプションを設定する方法については、Pub/Sub サブスクライバー ガイドをご覧ください。また、Pub/Sub クライアント ライブラリを使用すると、サブスクライバー アプリケーションをより簡単に開発できます。
フィールド値
このセクションでは、Cloud Deploy Pub/Sub メッセージのフィールドに使用できる値について説明します。
Action
の場合
これらの通知で、Action
の値は次のとおりです。
リソースの場合
Create
Update
Delete
オペレーションの場合:
Start
Succeed
Failure
Terminated
Cancelled
承認の場合:
Required
Approved
Rejected
前払いの場合:
Required
Advanced
ResourceType
の場合
ResourceType
に指定できる値は次のとおりです。
DeliveryPipeline
Target
Release
Rollout
JobRun
サンプル メッセージ
次の例は、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"
}
}
ロールアウトの進捗状況
次の例は、ロールアウトがフェーズから次のフェーズに進んだことを通知するために clouddeploy-advances
に公開された Pub/Sub メッセージを示しています。
{
"ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
"message": {
"attributes": {
"Action": "Advanced",
"Location": "us-central1",
"PhaseId": "stable",
"ProjectNumber": "120123456789",
"ReleaseId": "rollout-123",
"Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
"RolloutId": "rollout-123",
"TargetId": "prod"
},
"messageId": "7335813725293809",
"publishTime": "2023-04-03T15:16:30.425Z"
}
}
このメッセージで、PhaseId
は、ロールアウトが進行したフェーズを識別します。