タスクを構成する

このドキュメントでは、Cloud Deploy でタスクを構成する方法について説明します。タスクは、デプロイフックデプロイの検証デプロイの分析、またはカスタム ターゲット タイプのカスタム レンダリングやカスタム デプロイに使用できる作業単位です。

デリバリー パイプラインのタスク(戦略の一部として)またはカスタム ターゲット タイプのレンダリングまたはデプロイを構成できます。

タスクでは、タスク構成にテンプレート化することで、システム パラメータを使用できます。

タスクを定義する

タスクは、デリバリー パイプライン構成で定義することも、カスタム ターゲット タイプ定義の一部として定義することもできます。次の YAML は、どちらの場合でも使用される task スタンザを示しています。

  task:
    type: container
    image: IMAGE
    command: [COMMANDS_TO_RUN]
    args: [LIST_OF_ARGS]
    env:
    - KEY1:VAL1
    - KEY2:VAL2
    ...

task 構成の場合:

  • type

    構成するタスクの種類を指定します。container のみがサポートされています。

  • image

    コンテナ イメージのパスです。

  • command

    コンテナ上で実行するコマンドです。

  • args

    command の引数のコレクションです。

  • env

    実行中のコンテナに提供される環境変数のコレクションです。

タスク環境変数としてのシステム パラメータ

Cloud Deploy には、container タスクの env フィールドを使用して、タスクの環境変数として使用できるシステム生成パラメータが用意されています。テンプレート パラメータは、env マップエントリのキー フィールドまたは値フィールドに存在できます。

ユースケースの例をいくつか示します。

  • Cloud Run サービス名、サービス URL、リビジョン名を環境変数として渡す。

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - RUN_SERVICE_NAME : "${{ render.metadata.cloud_run.service.name }}"
      - RUN_SERVICE_URL: "${{ rollout.metadata.cloud_run.service_url }}"
      - RUN_REVISION_NAME: "${{ render.metadata.cloud_run.revision.name }}"
    
  • 1 つのエントリで複数のパラメータを使用する。

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - DEPLOY_PARAMS_KEY : "${{ deploy_params['FOO'] }}-with-${{ deploy_params['BAR'] }}"
      - "${{ project.id }}_${{ location }}" : "${{ target.id }}"
    

使用可能なシステム パラメータ

Cloud Deploy は、次のシステム パラメータを提供します。これらのパラメータは、次の形式でタスク構成で使用できます。

${{ parameter }}

$${{ }}

テンプレートで使用できるパラメータのリストは次のとおりです。

Name 定義
location Cloud Deploy リソースを含むリージョン。
リリース作成時に使用できます。
project.num Cloud Deploy リソースを含むプロジェクトの Google Cloud プロジェクト番号。
リリース作成時に使用できます。
project.id プロジェクトの Google Cloud プロジェクト ID。
リリース作成時に使用できます。
delivery_pipeline.name 配信パイプラインの完全指定リソース名。
リリース作成時に使用できます。
delivery_pipeline.id デリバリー パイプラインの ID。
リリース作成時に使用できます。
target.name ターゲットの完全なリソース名。
リリース作成時に使用できます。
target.id ターゲットの ID。
リリース作成時に使用できます。
release.name リリースの完全指定リソース名。
リリース作成時に使用できます。
release.id リリースの ID。
リリース作成時に使用できます。
rollout.name ロールアウトの完全指定リソース名。
ロールアウトの作成時に使用できます。
rollout.id ロールアウトの ID。
ロールアウトの作成時に使用できます。
job.id 実行中のジョブの ID。
ロールアウトの作成時に使用できます。
phase.id タスクのジョブを含むロールアウトのフェーズ
ロールアウトの作成時に使用できます。
job_run.name ジョブの現在の実行を表すジョブ実行の完全指定リソース名。
ロールアウトの作成時に使用できます。
job_run.id ジョブの現在の実行を表すジョブ実行の ID。
ロールアウトの作成時に使用できます。
deploy_params ターゲットに関連付けられたデプロイ パラメータのマップ。
例: deploy_params['KEY']
存在しないキーにアクセスしようとすると、空の文字列が返されます。
リリース作成時に使用できます。
タイプ RUN のターゲットの場合:
cloud_run.project Cloud Run サービスが作成されたプロジェクト。
リリース作成時に使用できます。
cloud_run.location Cloud Run サービスがデプロイされているリージョン。
リリース作成時に使用できます。
render.metadata.cloud_run.service.name デプロイされた Cloud Run サービスの名前。
レンダリング オペレーションが完了した後に使用できます。
render.metadata.cloud_run.service.id デプロイされた Cloud Run サービスの ID。
レンダリング オペレーションが完了した後に使用できます。
rollout.metadata.cloud_run.service.url エンドユーザーがサービスにアクセスするために使用する URL。これらは、 Google Cloud コンソールで、サービスの Cloud Run サービスの詳細で確認できます。
デプロイ オペレーションが完了すると使用可能になります。
render.metadata.cloud_run.revision.name デプロイされる Cloud Run サービスのリビジョンの完全名。
レンダリング オペレーションが完了した後に使用できます。
render.metadata.cloud_run.revision.id デプロイされる Cloud Run サービスのリビジョン ID。
レンダリング オペレーションが完了した後に使用できます。
rollout.metadata.cloud_run.previous_revision.name デプロイされる Cloud Run サービスの以前のリビジョンの完全名。
デプロイ オペレーションが完了すると使用可能になります。
rollout.metadata.cloud_run.previous_revision.id デプロイされる Cloud Run サービスの以前のリビジョン ID。
デプロイ オペレーションが完了すると使用可能になります。
タイプ GKE のターゲットの場合:
gke.cluster.name GKE クラスタの完全指定リソース名。
リリース作成時に使用できます。
gke.cluster.id GKE クラスタの ID。
リリース作成時に使用できます。
gke.cluster.project GKE クラスタのプロジェクト ID またはプロジェクト番号。
リリース作成時に使用できます。
gke.cluster.location GKE クラスタのロケーション。
リリース作成時に使用できます。
タイプ ANTHOS のターゲットの場合:
anthos.membership.project GKE Enterprise クラスタのプロジェクト ID または番号。
リリース作成時に使用できます。
anthos.membership.location GKE Enterprise クラスタのロケーション。
リリース作成時に使用できます。
anthos.membership.name GKE Enterprise メンバーシップの完全指定リソース名。
リリース作成時に使用できます。
anthos.membership.id GKE Enterprise メンバーシップの ID。
リリース作成時に使用できます。
Kubernetes ターゲット(GKE タイプと ANTHOS タイプのターゲット)の場合:
render.metadata.kubernetes.deployment 更新されるデプロイの名前。マニフェストに複数のデプロイがある場合、この値は設定されません。
レンダリング オペレーションが完了した後に使用できます。
render.metadata.kubernetes.canary_deployment 自動カナリアのカナリア デプロイの名前。ステーブル フェーズではカナリア版がないため、これは render.metadata.kubernetes.deployment と同じです。他のフェーズでは、これは render.metadata.kubernetes.deployment と同じで、末尾に -canary が付いています。
レンダリング オペレーションが完了した後に使用できます。
render.metadata.kubernetes.namespace デプロイされるリソースの Namespace。マニフェストに複数の Namespace がある場合は設定されません。
レンダリング オペレーションが完了した後に使用できます。
タイプ CUSTOM_TARGET_TYPE のターゲットの場合:
render.metadata.custom カスタム レンダリングからのレンダリング メタデータのマップ。
例: render.metadata.custom['KEY']
存在しないキーにアクセスしようとすると、空の文字列が返されます。
レンダリング オペレーションが完了した後に使用できます。
rollout.metadata.custom カスタム デプロイからのロールアウト メタデータのマップ。
例: rollout.metadata.custom['KEY']
存在しないキーにアクセスしようとすると、空の文字列が返されます。
デプロイ オペレーションが完了すると使用可能になります。

使用可能な環境変数

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

    ターゲットの特定のランタイム タイプ。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

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

  • CLOUD_DEPLOY_RELEASE

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

  • CLOUD_DEPLOY_ROLLOUT

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

  • CLOUD_DEPLOY_JOB_RUN

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

  • CLOUD_DEPLOY_PHASE

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

次のステップ