このドキュメントでは、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コンテナ上で実行するコマンドです。
argscommandの引数のコレクションです。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ターゲットの特定のランタイム タイプ。
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デプロイフック、検証ジョブ、カスタム レンダリングまたはデプロイのジョブを含むロールアウトのフェーズ。
次のステップ
- タスクを使用してデプロイフックを実行する方法を学習する
- タスクを使用してデプロイを確認する方法を学習する
- カスタム ターゲットについて