このドキュメントでは、カスタムの Cloud Deploy ターゲット タイプを作成し、Cloud Deploy デリバリー パイプラインでターゲットとしてそのカスタム ターゲット タイプを使用する方法について説明します。
カスタム ターゲット タイプを作成してデリバリー パイプラインで使用する大まかな手順は以下のとおりです。
カスタム ターゲットにデプロイする機能を持ち、カスタム ターゲット タイプに関する Cloud Deploy の要件を満たすコンテナ化されたアプリケーションを作成します。
コンテナを参照してコンテナ上で実行するコマンドを指定するタスクを含む
CustomTargetType定義を作成します。新しいカスタム ターゲット タイプを識別する
customTargetプロパティを持つ新しいターゲットを定義します。デリバリー パイプラインの進行に応じてそのターゲットを参照します。
各ステップについては、以降で詳しく説明します。
コンテナ化されたアプリケーションを作成する
カスタム ターゲットにデプロイする機能は、コンテナ化されたアプリケーションで定義されます。コンテナ化されたアプリケーションは、CustomTargetType 定義で Cloud Deploy に提供します。デリバリー パイプラインにカスタム ターゲット タイプを使用するターゲットが含まれている場合、Cloud Deploy はそのカスタム ターゲット タイプ用に定義されたコンテナを呼び出して、定義したカスタム レンダリングとデプロイを実行します。
アプリケーションの動作はユーザーが自由に設定できます。ただし、Cloud Deploy で指定された入力環境変数を使用する必要があり、必要な出力を返す必要があります。
ほとんどの場合、作成するカスタム ターゲット タイプごとにカスタム レンダリング用とカスタム デプロイ用のコンテナを 1 つずつ作成します。カスタム レンダリングは省略可能ですが、組み込みのレンダラでレンダリングされた場合にカスタム ターゲットが正しく機能する場合を除いて、カスタム レンダリングを作成する必要があります。Cloud Deploy は、デフォルトで skaffold render を使用してマニフェストをレンダリングします。
カスタム ターゲット タイプを定義する
カスタム ターゲットを定義するには、まず CustomTargetType 構成を使用してカスタム ターゲット タイプを作成します。CustomTargetType は、デリバリー パイプラインの定義またはターゲット定義と同じファイルに作成できます。また、別のファイルに作成することもできます。
CustomTargetType の定義は次のとおりです。
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
tasks:
render: [RENDER_TASK]
deploy: [DEPLOY_TASK]
ここで
CUSTOM_TARGET_TYPE_NAMEこのカスタム ターゲット タイプ定義に付ける任意の名前です。この名前は、定義しているカスタム ターゲット タイプを使用するターゲットのターゲット定義で参照されます。
RENDER_TASKカスタム レンダリングを定義するタスクです。指定しない場合、Cloud Deploy は Skaffold 構成で指定された組み込みのレンダラを使用します。
DEPLOY_TASK
カスタム ターゲット タイプを登録する
CustomTargetType を構成したら、gcloud deploy apply コマンドを実行して、 Google Cloud プロジェクトに CustomTargetType リソースを登録します。
gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]
ここで
FILE は、このカスタム ターゲット タイプを定義したファイルの名前です。
PROJECT は、このリソースを作成する Google Cloud プロジェクトです。CustomTargetType は、それを参照する Target リソースと同じプロジェクトに存在している必要があります。Google Cloud CLI のデフォルト プロジェクトとして設定している場合は、プロジェクトを指定する必要はありません。
REGION は、このリソースを作成するリージョン(us-central1 など)です。CustomTargetType は、それを参照する Target リソースと同じリージョンに存在する必要があります。gcloud CLI のデフォルト リージョンとして設定している場合は、リージョンを指定する必要はありません。
CustomTargetType が Cloud Deploy リソースとして作成されたので、それを Target 定義で使用してカスタム ターゲットを作成できるようになりました。
CustomTargetType 定義の詳細については、Cloud Deploy 構成スキーマ リファレンスをご覧ください。
ターゲットを定義する
サポートされているターゲット タイプのターゲット定義とカスタム ターゲット定義の唯一の違いは、カスタム ターゲット定義に customTarget スタンザが含まれていることです。customTarget の構文は次のとおりです。
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
ここで、CUSTOM_TARGET_TYPE_NAME は、カスタム ターゲット タイプ構成で定義された name プロパティの値です。
ターゲットをデリバリー パイプラインに追加する
カスタム ターゲットは、サポートされているターゲット タイプを使用する場合とまったく同じようにデリバリー パイプラインで使用できます。つまり、サポートされているターゲット タイプとカスタム ターゲットのターゲット間で、デリバリー パイプラインの進行に違いはありません。
デリバリー パイプライン内のターゲットはすべて同じターゲット タイプを使用する必要があります。たとえば、Google Kubernetes Engine にデプロイするターゲットとカスタム ターゲットを持つデリバリー パイプラインは使用できません。
サポートされているターゲット タイプと同様に、パイプライン ステージにデプロイ パラメータを含めることができます。
リリースを作成する
カスタム ターゲット タイプを完全に定義し、そのタイプを使用するターゲットが作成されると、通常の方法でリリースを作成できるようになります。
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
リリースを作成すると、リリース、ターゲット、デリバリーのいずれかのパイプラインで構成されたデプロイ パラメータの処理を含む、デリバリー パイプラインの各ターゲットに対してカスタム レンダリングが実行されます。Cloud Deploy により、カスタム レンダリング コンテナへの入力としてデプロイ パラメータが提供されます。
カスタム ターゲットの出力を表示する
カスタム レンダリング タスクがカスタム ターゲットの要件を満たしている場合は、 Google Cloud コンソールを使用してレンダリングされたアーティファクトを表示できます。
カスタム レンダリング タスクの出力を表示する手順は次のとおりです。
Google Cloud コンソールで、Cloud Deploy の [デリバリー パイプライン] ページに移動して、デリバリー パイプラインを表示します。
デリバリー パイプラインの名前をクリックします。
パイプラインの可視化によりアプリのデプロイ ステータスが表示され、[デリバリー パイプラインの詳細] の [リリース] タブにリリースが一覧表示されます。
リリース名をクリックします。
[リリースの詳細] ページが表示されます。
[アーティファクト] タブをクリックします。
[ターゲットのアーティファクト] で、[アーティファクトを表示] の横にある矢印をクリックします。
レンダリングされたアーティファクト(レンダリングされた Skaffold 構成ファイルやカスタム レンダラによって生成されたレンダリング マニフェスト ファイルなど)が一覧表示されます。また、各ファイルの横にある [ストレージの場所] リンクをクリックすると、Cloud Storage バケットに移動してこれらのファイルを表示できます。
[アーティファクトを表示] リンクをクリックすると、リリース インスペクタを使用して、リリース別、ターゲット別、フェーズ別にファイルを表示することもできます。
次のステップ
利用可能なカスタム ターゲット タイプのサンプルをご覧ください。
ToDo リストの詳細
Cloud Deploy ターゲットの構成の詳細を確認する