カスタム ターゲット タイプを定義して使用する
このクイックスタートでは、Cloud Deploy を使用してカスタム ターゲット タイプを作成し、そのタイプをカスタム ターゲットにデプロイする方法について説明します。
このクイックスタートでは、以下の内容を行います。
ターゲットの動作を構成するカスタム ターゲット タイプを定義します。この構成では、コンテナ イメージと、それらのイメージで実行するシェルコマンドが参照されます。これらのコマンドは、レンダリングとデプロイ オペレーションのためのアクションです。
カスタム ターゲット タイプを参照するターゲットを定義します。
Cloud Deploy デリバリー パイプラインを定義します。
このパイプラインには 1 つのステージのみが含まれ、1 つのターゲットのみが使用されます。この段階で、構成したターゲットを参照します。
リリースに必要な Skaffold 構成を作成します。
リリースを作成します。これにより、自動的にロールアウトが作成され、カスタム レンダリングとデプロイのオペレーションが実行されます。
このリリースとロールアウトの一環として、カスタム ターゲット タイプ構成で定義されたレンダリングとデプロイのオペレーションが両方とも実行されます。
カスタム オペレーションの結果を表示します。これには、Cloud Storage にアップロードされたレンダリング済みの構成ファイル、そのファイルに書き込まれた文字列、オペレーションのステータスを含む結果ファイルが含まれます。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Cloud Deploy、Cloud Build、GKE、Cloud Run、Cloud Storage API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。 -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Cloud Deploy、Cloud Build、GKE、Cloud Run、Cloud Storage API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。 -
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init - デフォルトの Compute Engine サービス アカウントに十分な権限があることを確認します。
このサービス アカウントにはすでに必要な権限が付与されている場合があります。これらの手順は、デフォルトのサービス アカウントの自動的なロール付与を無効にするプロジェクトに含まれています。
- 最初に、
clouddeploy.jobRunnerロールを追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - 特定のランタイム向けのデベロッパー ロールを追加します。
-
iam.serviceAccountUserロールを追加します。これには、ランタイムにデプロイするactAs権限が含まれます。gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
Google Cloud CLI がすでにインストールされている場合は、最新バージョンを実行していることを確認してください。
gcloud components update
デリバリー パイプライン、カスタム ターゲット タイプ、ターゲットを作成する
デリバリー パイプライン、カスタム ターゲット タイプ、ターゲットは、1 つのファイルまたは個別のファイルで定義できます。このクイックスタートでは、3 つすべてを含む 1 つのファイルを作成します。
ターミナル ウィンドウを開きます。
新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir custom-target-quickstart cd custom-target-quickstartcustom-target-quickstart ディレクトリに、次の内容の新しい
clouddeploy.yamlファイルを作成します。apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: custom-targets-pipeline serialPipeline: stages: - targetId: sample-env --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: sample-env customTarget: customTargetType: basic-custom-target --- apiVersion: deploy.cloud.google.com/v1 kind: CustomTargetType metadata: name: basic-custom-target tasks: render: type: 'container' image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e command: ['/bin/bash'] args: - '-c' - |- echo "Sample manifest rendered content" > manifest.txt gcloud storage cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json deploy: type: 'container' image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e command: ['/bin/bash'] args: - '-c' - |- echo {\"resultStatus\": \"SUCCEEDED\"} > results.json gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.jsonカスタム ターゲット タイプ定義には、レンダリング タスクとデプロイ タスクを定義する
tasksスタンザが含まれます。これらの各タスクでは、実行するコンテナ イメージと、そのコンテナ上で実行するコマンドが参照されます。パイプラインとターゲットを Cloud Deploy サービスに登録します。
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
これで、1 つのデリバリー パイプラインと 1つのターゲットが作成されました。このターゲットはこのカスタム ターゲット タイプを使用し、このパイプラインではアプリケーションがランタイムにデプロイされません。
次のとおりに、パイプラインとターゲットを確認します。
Google Cloud コンソールで、Cloud Deploy の [デリバリー パイプライン] ページに移動し、使用可能なデリバリー パイプラインのリストを表示します。
作成したデリバリー パイプラインが表示され、[ターゲット] 列に 1 つのターゲットが表示されます。

Skaffold 構成ファイルを作成する
このクイックスタートのリリースには Skaffold 構成ファイルが必要ですが、このファイルに意味のある構成は必要ありません。
次の内容のファイルを
skaffold.yamlという名前で作成します。apiVersion: skaffold/v4beta7 kind: Config
リリースを作成する
リリースは Cloud Deploy リソースの中心で、デプロイの変更を表します。デリバリー パイプラインは、そのリリースのライフサイクルを定義します。このライフサイクルの詳細については、Cloud Deploy のサービス アーキテクチャをご覧ください。
custom-target-quickstart ディレクトリから次のコマンドを実行して、デプロイするカスタム アクションを表す release リソースを作成します。
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=custom-targets-pipeline
すべてのリリース(--disable-initial-rollout を含むものを除き)において、Cloud Deploy ではロールアウト リソースも自動的に作成されます。レンダリングやデプロイなど、ロールアウトのすべてのフェーズが実行されます。
Google Cloud コンソールで結果を表示する
数分後にデプロイが完了します。この場合、2 つのカスタム アクションは文字列をファイルにエコーしてそのファイルを Cloud Storage にアップロードするコマンドであるため、ターゲット ランタイムには何もデプロイされません。
ただし、次のように、ファイルとそのファイル内の文字列は表示できます。
Google Cloud コンソールで、Cloud Deploy の [デリバリー パイプライン] ページに移動し、デリバリー パイプライン(
custom-targets-pipeline)を表示します。デリバリー パイプラインの名前(
custom-targets-pipeline)をクリックします。可視化されたパイプラインでは、アプリのデプロイ ステータスが表示されます。パイプラインには 1 つのステージしかないため、可視化されたパイプラインにはノードが 1 つだけ表示されます。

リリースが [デリバリー パイプラインの詳細] の下の [リリース] タブに表示されます。
リリース名をクリックします。
[リリースの詳細] ページが表示されます。
[アーティファクト] タブをクリックします。
[ターゲットのアーティファクト] で、[アーティファクトを表示] リンクをクリックします。
レンダリングされたマニフェスト ファイルが表示されます。この場合、このファイルはカスタム ターゲット タイプの構成で定義したカスタム レンダリング アクションの出力であり、「サンプルのレンダリングされたマニフェストのコンテンツ 」が含まれています。

このリリースで作成された Cloud Storage バケットを確認します。
[バケット] ページが表示され、このリリース用に作成された 2 つのバケットが表示されます。1 つのバケットには、デリバリー パイプライン構成ファイルとレンダリングされた
skaffold.yamlが含まれています。もう 1 つは、カスタム アクションを作成するように構成された出力ファイルです。名前が
us-central1.deploy-artifacts... で始まるバケットをクリックします
名前が
custom-targets-pipeline-で始まるフォルダをクリックし、test-release-001フォルダをクリックします。ロールアウト名になっているフォルダをクリックします(
test-release-001-to-sample-env-0001)。表示されたフォルダ(UUID)をクリックして
custom-outputフォルダをクリックします。results.jsonをクリックし、[認証済み URL] フィールドのハイパーリンク URL をクリックします。このファイルには、カスタム ターゲット タイプの定義で
custom-deployアクションの出力として構成した文字列が含まれています。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
次のように、デリバリー パイプライン、ターゲット、リリース、ロールアウトを削除します。
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDCloud Deploy によって作成された Cloud Storage バケットを両方とも削除します。
これでクイックスタートの演習はすべて終了です。
次のステップ
利用可能なカスタム ターゲット タイプのサンプルをご覧ください。
Cloud Deploy のチュートリアルをお試しください。