カスタム分析を定義する

Cloud Deploy は、Google Cloud Observability によって生成されたアラートを使用する分析ジョブをサポートしています。このアラートは、Google Cloud Observability の指標やその他のデータに基づいています。 ただし、Cloud Deploy を拡張して他の指標プロバイダを使用することもできます。このドキュメントでは、分析ジョブを構成して使用する方法と、選択したプロバイダの指標を分析するロジックを含むカスタム コンテナの要件について説明します。

始める前に

  1. ログイン Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、 新しいアカウントを登録します

  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  5. このガイドを完了するために必要な権限があることを 確認します

  6. プロジェクトに対して課金が有効になっていることを確認します Google Cloud 。

  7. Compute Engine API と Cloud Deploy API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Google Cloud CLI をインストールします。

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  11. このガイドを完了するために必要な権限があることを 確認します

  12. プロジェクトに対して課金が有効になっていることを確認します Google Cloud 。

  13. Compute Engine API と Cloud Deploy API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enableロールを付与する方法を確認する

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

必要なロール

分析ジョブを作成して使用するために必要な権限を取得するには、プロジェクトのアカウントに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

Cloud Deploy サービス アカウントに分析ジョブを作成して使用するために必要な 権限があることを確認するには、 プロジェクトの Cloud Deploy サービス アカウントに 次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限を Cloud Deploy サービス アカウントに付与することもできます。

カスタム分析ジョブを構成する

カスタム分析ジョブは、 Google Cloud Observability からのアラートを使用する分析ジョブと同じですが、カスタムジョブでは、カスタム コンテナと、それらのコンテナで実行するコマンドを 参照する 1 つ以上の タスクを使用して、指標プロバイダのデータを処理します。

このセクションでは、モニタリング以外のプロバイダを使用する Cloud Deploy 分析ジョブ を構成する方法について説明します。Google Cloud

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(カンマ区切りのリスト)。これらは、 コンソールで、サービスの Cloud Run サービスの詳細で確認できます。 Google Cloud 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

    ターゲットの特定のランタイム タイプ。GKEANTHOSRUN のいずれか。 カスタム ターゲットの場合、これは設定されません。

  • CLOUD_DEPLOY_LOCATION

    Cloud Deploy リソースを含むリージョン。

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    デリバリー パイプラインの ID。

  • CLOUD_DEPLOY_TARGET

    ターゲットの ID。

  • CLOUD_DEPLOY_PROJECT

    Cloud Deploy リソースを含むプロジェクトの プロジェクト番号。 Google Cloud

  • CLOUD_DEPLOY_PROJECT_ID

    プロジェクトのプロジェクト ID。 Google Cloud

  • CLOUD_DEPLOY_RELEASE

    検証が実行されるリリースの ID。

  • CLOUD_DEPLOY_ROLLOUT

    フックのジョブを含むロールアウトの ID。

  • CLOUD_DEPLOY_JOB_RUN

    ジョブの現在の実行を表すジョブ実行の ID。

  • CLOUD_DEPLOY_PHASE

    デプロイ フック、検証ジョブ、カスタム レンダリングまたはデプロイのジョブを含むロールアウトのフェーズ

次のステップ