Cloud Deploy は、Google Cloud Observability の指標やその他のデータに基づいて Google Cloud Observability によって生成されたアラートを使用する分析ジョブをサポートしています。ただし、他の指標プロバイダを使用するように Cloud Deploy を拡張することもできます。このドキュメントでは、分析ジョブを構成して使用する方法と、選択したプロバイダの指標を分析するロジックを含むカスタム コンテナの要件について説明します。
始める前に
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init Compute Engine API と Cloud Deploy API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init Compute Engine API と Cloud Deploy API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com
必要なロール
分析ジョブの作成と使用に必要な権限を取得するには、プロジェクトのアカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Deploy ジョブ実行者 (
roles/clouddeploy.jobRunner) -
IAM サービス アカウント ユーザー (
roles/iam.serviceAccountUser) -
Service Usage ユーザー(
roles/serviceusage.serviceUsageConsumer)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Deploy サービス アカウントに分析ジョブの作成と使用に必要な権限が付与されるようにするには、プロジェクトの Cloud Deploy サービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。
-
IAM サービス アカウント ユーザー (
roles/iam.serviceAccountUser) -
Cloud Deploy リリース担当者 (
roles/clouddeploy.releaser) -
Cloud Deploy オペレータ (
roles/clouddeploy.operator)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、Cloud Deploy サービス アカウントに必要な権限を付与することもできます。
カスタム分析ジョブを構成する
カスタム分析ジョブは、Google Cloud Observability のアラートを使用する分析ジョブと同じですが、カスタムジョブでは、カスタム コンテナと、そのコンテナで実行するコマンドを参照して、指標プロバイダのデータを処理する 1 つ以上のタスクを使用します。
このセクションでは、Google Cloud 以外のモニタリング プロバイダを使用する Cloud Deploy 分析ジョブを構成する方法について説明します。
analysis スタンザは、デプロイ戦略構成(標準戦略の場合は strategy.standard.analysis)内で直接使用できます。フェーズごとに分析を構成する場合は、カスタム カナリア(strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)を使用します。
strategy:
standard:
analysis:
duration: DURATION
customChecks:
- id: CHECK_ID
frequency: FREQUENCY
task:
type: container
image: IMAGE_NAME
command: COMMAND
args: [ARGS]
env:
[VAR_NAME: VALUE]
ここで
DURATION分析ジョブを実行する時間(秒単位)。期間が経過すると、ジョブは終了します。分析が失敗した場合(コンテナがゼロ以外の終了コードを返した場合)、ジョブは期間が終了する前に終了します(
FAILED)。CHECK_ID個別のチェックの ID です。この ID は、この分析ジョブ内で一意である必要があります。
FREQUENCY個々のチェックを実行する頻度(秒単位)です。
IMAGE_NAMEコンテナ イメージを識別するパスと名前です。
COMMANDこのコンテナで実行するコマンド(シェル スクリプト(
/bin/bash)など)。ARGSこのコマンドの引数のリストです。カンマ区切りのリストです。COMMAND_TO_RUN が "/bin/sh" の場合、ここでの引数の 1 つは
-cになり、別の引数は呼び出したシェルで実行するコマンドの全体です。VAR_NAMEコンテナに渡す環境変数の名前です。環境変数を使用して、コンテナの動作を構成します。つまり、変数とその値は、指標プロバイダで具体的に何をモニタリングするかをコンテナに伝えます。
ここでは、システム パラメータを環境変数として使用できます。
VALUE各環境変数の値です。Cloud Deploy は、これらの環境変数を値とともにコンテナに渡す以外には何も行いません。コンテナで分析ロジックの値を使用するかどうかは、コンテナ次第です。
カスタム分析定義の各チェックには、コンテナを参照するタスク、そのコンテナで実行するコマンド、そのコンテナに渡す適用可能な環境変数が含まれます。
カスタム コンテナ
カスタム分析の場合、提供するコンテナは、使用する指標プロバイダからのテレメトリー、ログ、その他のデータの分析を担当します。Cloud Deploy 分析ジョブは、コンテナからのリターン コードを待機します。
カスタム コンテナの処理内容
カスタム コンテナは、指標プロバイダからデータを取り込み、指標、ログ、その他のデータがアプリケーションの正常な動作を示しているかどうかを判断し、結果を Cloud Deploy に返します。
カスタム コンテナが返す必要があるもの
Cloud Deploy では、カスタム コンテナからゼロまたはゼロ以外の終了コードが返されること以外は何も必要ありません。コンテナがゼロ以外の終了コードを返すと、分析は失敗します。
コンテナは、Cloud Deploy で提供される Cloud Storage バケットにある results.json という名前のファイル(JSON 形式)に結果を書き込むことができます。ファイルには、Key-Value ペアの形式でメタデータが含まれます。これは必須ではありません。
使用可能な環境変数
Cloud Deploy では、実行環境で次の環境変数を指定し、入力します。これらの環境変数は、デプロイフック、検証ジョブ、カスタム ターゲットのレンダリングまたはデプロイの一部として使用できます。
ANTHOS_MEMBERSHIPタイプが
ANTHOSのターゲットの場合、Anthos メンバーシップの完全なリソース名。CLOUD_RUN_LOCATIONタイプが
RUNのターゲットの場合、Cloud Run サービスがデプロイされているリージョン。CLOUD_RUN_PROJECTタイプが
RUNのターゲットの場合、Cloud Run サービスが作成されたプロジェクト。CLOUD_RUN_SERVICEタイプが
RUNのターゲットの場合、デプロイされた Cloud Run サービスの名前。CLOUD_RUN_SERVICE_URLSタイプが
RUNのターゲットの場合、エンドユーザーがサービスへのアクセスに使用する 1 つまたは複数の URL(カンマ区切りのリスト)。これらは、Google Cloud コンソールで、サービスの Cloud Run サービスの詳細で確認できます。URL は、Cloud Run サービスが正常にデプロイされた後に Cloud Run によって生成されます。そのため、この環境変数は postdeploy フックと検証ジョブでのみ使用できます。CLOUD_RUN_REVISIONタイプが
RUNのターゲットの場合、Cloud Run サービスの特定のリビジョン。GKE_CLUSTERタイプが
GKEのターゲットの場合、Google Kubernetes Engine クラスタの完全なリソース名。例:projects/p/locations/us-central1/clusters/dev。TARGET_TYPEターゲットの特定のランタイム タイプ。
GKE、ANTHOS、RUNのいずれか。 カスタム ターゲットの場合、これは設定されません。CLOUD_DEPLOY_LOCATIONCloud Deploy リソースを含むリージョン。
CLOUD_DEPLOY_DELIVERY_PIPELINEデリバリー パイプラインの ID。
CLOUD_DEPLOY_TARGETターゲットの ID。
CLOUD_DEPLOY_PROJECTCloud Deploy リソースを含むプロジェクトの Google Cloud プロジェクト番号。
CLOUD_DEPLOY_PROJECT_IDプロジェクトの Google Cloud プロジェクト ID。
CLOUD_DEPLOY_RELEASE検証が実行されるリリースの ID。
CLOUD_DEPLOY_ROLLOUTフックのジョブを含むロールアウトの ID。
CLOUD_DEPLOY_JOB_RUNジョブの現在の実行を表すジョブ実行の ID。
CLOUD_DEPLOY_PHASEデプロイフック、検証ジョブ、カスタム レンダリングまたはデプロイのジョブを含むロールアウトのフェーズ。
次のステップ
デプロイ分析を設定する方法を確認する。
分析の構成スキーマについては、Cloud Deploy 構成リファレンスをご覧ください。
デプロイの自動化について学習する。
デプロイ戦略の詳細を確認する。