このドキュメントでは、Cloud Deploy におけるカスタム ターゲットの仕組みについて説明します。
Cloud Deploy には、さまざまなランタイム環境のサポートがターゲットとして組み込まれています。ただし、サポート対象のターゲット タイプのリストには上限があります。カスタム ターゲットを使用すると、サポート対象のランタイム以外のシステムにもデプロイできます。
カスタム ターゲットとは、Cloud Deploy でサポートされるランタイム以外の任意の出力環境を表すターゲットです。
カスタム ターゲット タイプを定義し、デリバリー パイプラインでターゲットとして実装するプロセスは、カスタム ターゲットを作成するページで説明されています。
カスタム ターゲットの内容
各カスタム ターゲットは、以下のコンポーネントで構成されています。
カスタム ターゲット タイプのレンダリングとデプロイの方法を定義するタスク
カスタム レンダリングとカスタム デプロイの実装では、Cloud Deploy で指定された値を使用して、必要な出力のセットを完了する必要があります。
カスタム レンダリングは省略可能ですが、Cloud Deploy の組み込みレンダラでレンダリングされた場合にカスタム ターゲットが正しく機能する場合を除いて、カスタム レンダリングを作成する必要があります。
-
CustomTargetTypeは、このタイプのターゲットがリリース レンダリングとロールアウト デプロイ アクティビティに使用するタスクを識別する Cloud Deploy リソースです。 -
カスタム ターゲットのターゲット定義は、値が
CustomTargetTypeの名前であるcustomTargetプロパティを含むことを除いて、どのターゲット タイプでも同じです。
これらのコンポーネントを適正に配置すると他のターゲットと同じようにそのターゲットを使用し、デリバリー パイプラインの進行に応じてターゲットを参照して、プロモーションと承認、ロールバックなどの Cloud Deploy 機能を最大限に活用できます。
例
クイックスタートのカスタム ターゲット タイプを定義して使用するでは、コンテナ イメージで実行するコマンド(レンダリング用とデプロイ用のコマンド)を含むカスタム ターゲット タイプを作成します。この場合のコマンドは、レンダリングとデプロイに必要な出力ファイルにテキストを追加するだけです。
その他の例については、カスタム ターゲットの例をご覧ください。
必要な入力と出力
Cloud Deploy で定義されたカスタム ターゲット タイプは、レンダリングとデプロイの両方で入力と出力の要件を満たす必要があります。このセクションでは、必要となる入出力とその指定方法を示します。
Cloud Deploy では、レンダリングとデプロイの両方で必要な入力が環境変数として提供されます。以降のセクションでは、これらの入力と、カスタム レンダリングとデプロイで返される必要がある出力を示します。
パラメータを環境変数としてデプロイする
このセクションに記載されている環境変数に加えて、設定したデプロイ パラメータが Cloud Deploy からカスタム コンテナに渡されます。
カスタム レンダリングへの入力
カスタム レンダリングの場合、Cloud Deploy では次の入力が環境変数として提供されます。マルチフェーズ ロールアウト(カナリア デプロイ)の場合、Cloud Deploy では以下の変数が各フェーズで提供されます。
CLOUD_DEPLOY_PROJECTカスタム ターゲットが作成されるプロジェクトの Google Cloud プロジェクト番号。
CLOUD_DEPLOY_PROJECT_IDプロジェクトの Google Cloud プロジェクト ID。
CLOUD_DEPLOY_LOCATIONカスタム ターゲット タイプの Google Cloud リージョン。
CLOUD_DEPLOY_DELIVERY_PIPELINEカスタム ターゲット タイプを参照する Cloud Deploy のデリバリー パイプラインの名前。
CLOUD_DEPLOY_RELEASEレンダリング オペレーションが呼び出されるリリースの名前。
CLOUD_DEPLOY_TARGETカスタム ターゲット タイプを使用する Cloud Deploy ターゲットの名前。
CLOUD_DEPLOY_PHASEレンダリングが対応するロールアウト フェーズ。
CLOUD_DEPLOY_REQUEST_TYPEカスタム レンダリングの場合、これは常に
RENDERです。CLOUD_DEPLOY_FEATURESカスタム コンテナがサポートする必要がある Cloud Deploy 機能のカンマ区切りのリスト。この変数には、配信パイプラインで構成された機能に基づいて値が設定されます。
実装上このリストの機能がサポートされていない場合は、レンダリングでエラーにすることをおすすめします。
標準デプロイの場合、これは空です。カナリア デプロイの場合、値は
CANARYです。Cloud Deploy で指定された値がCANARYの場合、カナリアの各フェーズでレンダリングが呼び出されます。各フェーズのカナリア パーセンテージはCLOUD_DEPLOY_PERCENTAGE_DEPLOY環境変数で指定されます。CLOUD_DEPLOY_PERCENTAGE_DEPLOYこのレンダリング オペレーションに関連するデプロイの割合。
CLOUD_DEPLOY_FEATURES環境変数がCANARYに設定されている場合、フェーズごとにカスタム レンダリングが呼び出され、この変数が各フェーズのカナリア パーセンテージに設定されます。標準デプロイとstableフェーズに到達したカナリア デプロイの場合、これは100です。CLOUD_DEPLOY_STORAGE_TYPEストレージ プロバイダ常に
GCSです。CLOUD_DEPLOY_INPUT_GCS_PATHリリースの作成時に書き込まれたレンダーファイル アーカイブの Cloud Storage パス。
CLOUD_DEPLOY_OUTPUT_GCS_PATHカスタム レンダリング コンテナがデプロイで使用されるアーティファクトをアップロードする際に想定される Cloud Storage のパス。レンダリングでは、このレンダリング オペレーションの結果を含む
results.jsonという名前のファイルをアップロードする必要があります。詳細については、カスタム レンダリングの出力をご覧ください。
カスタム レンダリングからの出力
カスタム レンダリングでは、このセクションで説明する情報が提供される必要があります。その情報は、Cloud Deploy(CLOUD_DEPLOY_OUTPUT_GCS_PATH)で提供される Cloud Storage バケットにある results.json という名前の結果ファイルに含める必要があります。
レンダリングされた構成ファイル
以下の情報が含まれている
results.jsonファイル。カスタム レンダリングの成功または失敗の状態を示す表示。
有効な値は
SUCCEEDEDとFAILEDです。(省略可)カスタム レンダリングによって生成されたエラー メッセージ。
レンダリングされた構成ファイルまたはファイルの Cloud Storage パス。
レンダリングされたすべての構成ファイルのパスは完全 URI です。Cloud Deploy によって提供される
CLOUD_DEPLOY_OUTPUT_GCS_PATHの値を部分的に使用して入力します。レンダリングされた構成ファイルは、空であっても指定する必要があります。ファイルの内容は、カスタム デプロイで使用できるものであれば、どのような形式でもかまいません。このファイルは、お客様や組織内の別のユーザーがリリース インスペクタでこのファイルを表示できるように、人が読める形式にすることをおすすめします。
(省略可)含めるメタデータのマップ
このメタデータはカスタム ターゲットによって作成されます。このメタデータは、本リリースの
custom_metadataフィールドに保存されます。
デバッグなどのために results.json ファイルを調べる必要がある場合は、Cloud Build ログでそのファイルの Cloud Storage URI を確認できます。
レンダリング結果ファイルの例
カスタム レンダリングから出力される results.json ファイルの例を次に示します。
{
"resultStatus": "SUCCEEDED",
"manifestFile": "gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/manifest.yaml",
"failureMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
カスタム デプロイの入力
カスタム デプロイの場合、Cloud Deploy では次の入力が環境変数として提供されます。
CLOUD_DEPLOY_PROJECTカスタム ターゲットが作成されるプロジェクトの Google Cloud プロジェクト番号。
CLOUD_DEPLOY_PROJECT_IDプロジェクトの Google Cloud プロジェクト ID。
CLOUD_DEPLOY_LOCATIONカスタム ターゲット タイプの Google Cloud リージョン。
CLOUD_DEPLOY_DELIVERY_PIPELINEカスタム ターゲット タイプを使用するターゲットを参照する Cloud Deploy のデリバリー パイプラインの名前。
CLOUD_DEPLOY_RELEASEデプロイ オペレーションが呼び出されるリリースの名前。
CLOUD_DEPLOY_ROLLOUTこのデプロイの対象となる Cloud Deploy のロールアウトの名前。
CLOUD_DEPLOY_TARGETカスタム ターゲット タイプを使用する Cloud Deploy ターゲットの名前。
CLOUD_DEPLOY_PHASEデプロイに対応するロールアウト フェーズ。
CLOUD_DEPLOY_REQUEST_TYPEカスタム デプロイの場合、これは常に
DEPLOYです。CLOUD_DEPLOY_FEATURESカスタム コンテナがサポートする必要がある Cloud Deploy 機能のカンマ区切りのリスト。この変数には、配信パイプラインで構成された機能に基づいて値が設定されます。
実装上このリストの機能がサポートされていない場合は、レンダリングでエラーにすることをおすすめします。
標準デプロイの場合、これは空です。カナリア デプロイの場合、値は
CANARYです。Cloud Deploy で指定された値がCANARYの場合、カナリアの各フェーズでデプロイが呼び出されます。各フェーズのカナリア パーセンテージはCLOUD_DEPLOY_PERCENTAGE_DEPLOY環境変数で指定されます。CLOUD_DEPLOY_PERCENTAGE_DEPLOYこのデプロイ オペレーションに関連するデプロイの割合。
CLOUD_DEPLOY_FEATURES環境変数がCANARYに設定されている場合、フェーズごとにカスタム デプロイが呼び出され、この変数が各フェーズのカナリア パーセンテージに設定されます。デプロイはフェーズごとに実行する必要があります。CLOUD_DEPLOY_STORAGE_TYPEストレージ プロバイダ常に
GCSです。CLOUD_DEPLOY_INPUT_GCS_PATHカスタム レンダラがレンダリング構成ファイルを書き込んだ Cloud Storage パス。
CLOUD_DEPLOY_SKAFFOLD_GCS_PATHレンダリングされた Skaffold 構成の Cloud Storage パス。リリースで Skaffold 構成を指定した場合。
CLOUD_DEPLOY_MANIFEST_GCS_PATHレンダリングされたマニフェスト ファイルの Cloud Storage パス。
CLOUD_DEPLOY_OUTPUT_GCS_PATHカスタム デプロイ コンテナがデプロイ アーティファクトをアップロードすると予想される Cloud Storage ディレクトリのパス。詳細については、カスタム デプロイの出力をご覧ください。
カスタム デプロイからの出力
カスタム デプロイでは、results.json 出力ファイルを書き込む必要があります。このファイルは、Cloud Deploy(CLOUD_DEPLOY_OUTPUT_GCS_PATH)で提供される Cloud Storage バケットに配置する必要があります。
このファイルには、以下のものが含まれている必要があります。
カスタム デプロイの成功または失敗の状態を示す表示。
有効なステータスは次のとおりです。
SUCCEEDEDFAILEDSKIPPED
これは、カナリア フェーズがスキップされ、そのまま
stableに進むカナリア デプロイの場合です。(省略可)デプロイ アーティファクト ファイルのリスト(Cloud Storage パスの形式)
パスは完全 URI です。Cloud Deploy によって提供される
CLOUD_DEPLOY_OUTPUT_GCS_PATHの値を部分的に使用して入力します。ここに一覧表示されたファイルは、デプロイ アーティファクトとしてジョブ実行リソースに入力されます。
(省略可)カスタム デプロイが成功しなかった場合(
FAILED状態を返した場合)は失敗メッセージこのメッセージは、このデプロイのジョブ実行時に
failure_messageを入力するために使用されます。(省略可)デプロイによって
SKIPPEDステータスが返された場合に、追加情報を提供するスキップ メッセージ。(省略可)含めるメタデータのマップ
このメタデータはカスタム ターゲットによって作成されます。このメタデータは、ジョブ実行時とロールアウト時に
custom_metadataフィールドに格納されます。
デバッグなどのために results.json ファイルを調べる必要がある場合は、Cloud Build ログでそのファイルの Cloud Storage URI を確認できます。
デプロイ結果ファイルの例
カスタム デプロイから出力される results.json ファイルの例を次に示します。
{
"resultStatus": "SUCCEEDED",
"artifactFiles": [
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file1.yaml",
"gs://bucket/my-pipeline/release-001/rollout-a/01234/custom-output/file2.yaml"
],
"failureMessage": "",
"skipMessage": "",
"metadata": {
"key1": "val",
"key2": "val"
}
}
カスタム ターゲットの詳細
カスタム ターゲット タイプを設定して使用する際は、次の点に留意してください。
タスクの実行
カスタム レンダリング タスクとデプロイ タスクは、Cloud Deploy の実行環境で実行されます。Google Kubernetes Engine クラスタで実行するようにタスクを構成することはできません。
カスタム ターゲットとデプロイの戦略
カスタム ターゲットは、標準デプロイで完全にサポートされています。
カスタム レンダラとデプロイツールがカナリア機能をサポートしている限り、Cloud Deploy はカナリア デプロイをサポートします。
カスタム カナリア構成を使用する必要があります。自動カナリアおよびカスタム自動カナリアは、カスタム ターゲットではサポートされていません。
カスタム ターゲットとデプロイ パラメータ
カスタム ターゲットでデプロイ パラメータを使用できます。デプロイ パラメータは、デリバリー パイプライン ステージ、カスタム ターゲット タイプを使用するターゲット、リリースで設定できます。
デプロイ パラメータは、すでに提供された環境変数に加えて、カスタム レンダリングおよびデプロイ コンテナに環境変数として渡されます。
カスタム ターゲットの例
cloud-deploy-samples リポジトリには、カスタム ターゲット実装のサンプルセットが含まれています。次のサンプルを利用できます。
GitOps
Vertex AI
Terraform
Infrastructure Manager
Helm
各サンプルにはクイックスタートが含まれています。
これらのサンプルは、サポート対象の Google Cloud プロダクトではなく、 Google Cloud サポート契約の対象外です。 Google Cloud プロダクトのバグを報告したり、機能をリクエストしたりするには、 Google Cloudサポートにお問い合わせください。
次のステップ
カスタム ターゲットがわかったところで、カスタム ターゲットの構成と使用の方法を確認する。
Cloud Deploy ターゲットの構成について詳細を確認する。
Cloud Deploy の実行環境について学習する。