このドキュメントでは、Cloud Run サービス、Cloud Run ジョブ、Cloud Run ワーカー プールなどのアプリケーションをデプロイする方法について説明します。
Cloud Deploy を使用すると、コンテナベースのワークロードを任意の Cloud Run サービス、ジョブ、またはワーカープールにデプロイできます。Cloud Run サービスまたはワーカープールの Cloud Run ターゲットにデプロイする場合、Cloud Deploy のすべての機能はサポートされますが、Cloud Run ジョブのカナリア デプロイはサポートされません。
このドキュメントでは、Cloud Run にデプロイするために完了する必要がある 3 つの主要な構成について説明します。
- ターゲット構成を作成する
- Skaffold 構成を作成する
- Cloud Run のサービス定義、ジョブ定義、またはワーカープール定義を作成する
制限事項
ターゲットごとにデプロイできる Cloud Run サービス、ジョブ、ワーカープールは 1 つだけです。
Cloud Run ジョブに対してカナリア デプロイを実行することはできません。
ただし、Cloud Run サービスとワーカープールではカナリア デプロイを使用できます。
Cloud Deploy を使用して Cloud Run 関数をデプロイするには、関数をコンテナにビルドして Cloud Run サービスとしてデプロイするように CI ワークフローを変更する必要があります。
始める前に
gcloud CLI バージョン
541.0.0以降を使用していることを確認します。
ターゲット構成を作成する
ターゲットは、デリバリー パイプライン YAML で構成することも、別のファイルで構成することもできます。また、同じファイルで複数のターゲットを構成することもできます。
ターゲットは、デリバリー パイプラインと同じプロジェクトとリージョンで定義する必要があります。ただし、ターゲットのデプロイ先となるサービス、ジョブ、ワーカー プールは、サービス アカウントがこれらのプロジェクトにアクセスできる限り、異なるプロジェクトとリージョンに存在できます。
ターゲット定義で、Cloud Run サービスが作成される場所を特定する run スタンザを作成します。
ターゲット定義で Cloud Run サービス、ジョブ、ワーカープールを指定する構文は次のとおりです。
run:
location: projects/[project_name]/locations/[region_name]
このリソース ID には次の要素が使用されます。
project_nameは、Cloud Run サービス、ジョブ、ワーカープールが作成される Google Cloud プロジェクトの名前です。ターゲットごとにこれを行います。Cloud Run のサービス、ジョブ、ワーカープールごとに異なるプロジェクトを指定することをおすすめします。同じプロジェクトに複数のサービス、ジョブ、ワーカープールが必要な場合は、
skaffold.yaml構成ファイルで Skaffold プロファイルを使用する必要があります。region_nameは、サービス、ジョブ、ワーカープールが作成されるリージョンです。サービス、ジョブ、ワーカープールは、Cloud Run がサポートする任意のリージョンに配置できます。
以下は、作成する Cloud Run サービス、ジョブ、ワーカープールを定義するターゲット構成の例です。
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development service
run:
location: projects/my-app/locations/us-central1
このターゲットは、Cloud Deploy デリバリー パイプラインの定義内または個別に定義できます。いずれにしても、リリースを作成して Cloud Run サービス、ジョブ、ワーカープールをデプロイする前に、ターゲットを登録する必要があります。
Skaffold 構成を作成する
Cloud Run デプロイの skaffold.yaml ファイルの例を次に示します。
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: cloud-run-application
manifests