このページでは、コンテナ イメージを新しい Cloud Run ワーカープールまたは既存の Cloud Run ワーカープールの新しいリビジョンにデプロイする方法について説明します。
ワーカープールは、継続的なバックグラウンド作業を実行するために特別に設計された Cloud Run リソースです。Cloud Run サービスとは異なり、ワーカープールにはロードバランスされたエンドポイントや URL がなく、自動スケーリングもサポートしていません。
新しいワーカープールをデプロイするチュートリアルの例については、クイックスタート: サンプル ワーカープールを Cloud Run にデプロイするをご覧ください。
必要なロール
Cloud Run ワーカープールのデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run のワーカープールに対する Cloud Run デベロッパー(
roles/run.developer
) -
ワーカープールが他の Google Cloud サービスとやり取りするために使用する ID に対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser
) -
デプロイされたコンテナ イメージの Artifact Registry リポジトリに対する Artifact Registry 読み取り(
roles/artifactregistry.reader
)ロール
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run ワーカープールがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
サポートされているコンテナ レジストリとイメージ
Artifact Registry または Docker Hub に保存されているコンテナ イメージを直接使用できます。Google では Artifact Registry の使用をおすすめします。Docker Hub イメージは最大 1 時間キャッシュに保存されます。
Artifact Registry リモート リポジトリを設定することで、他の公開または限定公開のレジストリ(JFrog Artifactory、Nexus、GitHub Container Registry など)のコンテナ イメージを使用できます。
Docker の公式イメージや Docker が提供する OSS イメージなど、一般的なコンテナ イメージをデプロイする場合にのみ、Docker Hub の使用を検討してください。可用性を高めるには、これらの Docker Hub イメージを Artifact Registry リモート リポジトリ経由でデプロイすることをおすすめします。
Cloud Run は、Docker Hub または外部レジストリを使用する Artifact Registry リモート リポジトリからデプロイする場合について、9.9 GB を超えるコンテナ イメージ レイヤをサポートしていません。
ワーカープールをデプロイする
ワーカープールは次の方法でデプロイできます。
新しいワーカープールをデプロイする
タグ(たとえば、us-docker.pkg.dev/my-project/container/my-image:latest
)または正確なダイジェスト(たとえば、us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...
)でコンテナ イメージを指定できます。
ワーカープールを初めてデプロイすると、最初のリビジョンが作成されます。リビジョンは変更されません。コンテナ イメージタグからデプロイすると、ダイジェストに解決され、リビジョンは常にこの特定のダイジェストを処理します。
Google Cloud コンソール、Google Cloud CLI、Terraform のいずれかを使用し、それぞれの手順に従って操作を行います。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
メニューから [ワーカープール] を選択し、[コンテナをデプロイ] をクリックして、[ワーカープールの作成] フォームを表示します。
フォームで、コンテナ イメージを指定します。
ワーカープールの名前を入力します。ワーカープール名は 49 文字以下で、リージョンとプロジェクトごとに一意である必要があります。また、プロジェクトの既存のサービス名と同じ名前は使用できません。ワーカープール名は後から変更することはできません。この名前は一般公開されます。
ワーカーを配置するリージョンを選択します。リージョン セレクタには、料金階層が示され、カーボン フットプリントの影響が最も低いリージョンがハイライト表示されます。
[スケーリング] で、ワーカープールのインスタンス数を指定します。
[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックして、該当するタブでその他のオプション設定を指定します。
ワーカープールの構成が完了したら、[作成] をクリックしてイメージを Cloud Run にデプロイし、デプロイの完了を待ちます。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
ワーカープールのコンテナ イメージをデプロイするには:
次のコマンドを実行します。
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
次のように置き換えます。
- WORKER_POOL: デプロイ先のワーカープールの名前。ワーカープールがまだ存在しない場合、このコマンドはデプロイ中にワーカープールを作成します。このパラメータは省略できますが、省略するとワーカープールの名前を入力するよう求められます。ワーカープール名は 49 文字以下で、リージョンとプロジェクトごとに一意の名前を使用する必要があります。また、プロジェクトの既存のサービス名と同じ名前は使用できません。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。--image
フラグを指定しないと、deploy コマンドはソースコードからのデプロイを試行します。
デプロイが完了するまで待ちます。正常に完了すると、Cloud Run に成功メッセージと、デプロイされたワーカープールのリビジョン情報が表示されます。
run/region
gcloud
プロパティで設定した場所とは異なる場所にデプロイする場合は、次のようにします。gcloud beta run worker-pools deploy WORKER_POOL --region REGION
- WORKER_POOL: ワーカープールの名前。
- REGION: Google Cloud リージョン(例:
europe-west1
)。 - IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
}
次のように置き換えます。
Cloud Run のロケーション
Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。
レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloudプロダクトのロケーションも考慮する必要があります。 Google Cloud プロダクトを複数のロケーションで使用すると、サービスのレイテンシだけでなく、コストにも影響を及ぼす可能性があります。
Cloud Run は、次のリージョンで利用できます。
ティア 1 料金を適用
asia-east1
(台湾)asia-northeast1
(東京)asia-northeast2
(大阪)asia-south1
(ムンバイ、インド)europe-north1
(フィンランド)低 CO2
europe-north2
(ストックホルム)低 CO2
europe-southwest1
(マドリッド)低 CO2
europe-west1
(ベルギー)低 CO2
europe-west4
(オランダ)低 CO2
europe-west8
(ミラノ)europe-west9
(パリ)低 CO2
me-west1
(テルアビブ)northamerica-south1
(メキシコ)us-central1
(アイオワ)低 CO2
us-east1
(サウスカロライナ)us-east4
(北バージニア)us-east5
(コロンバス)us-south1
(ダラス)低 CO2
us-west1
(オレゴン)低 CO2
ティア 2 料金を適用
africa-south1
(ヨハネスブルグ)asia-east2
(香港)asia-northeast3
(ソウル、韓国)asia-southeast1
(シンガポール)asia-southeast2
(ジャカルタ)asia-south2
(デリー、インド)australia-southeast1
(シドニー)australia-southeast2
(メルボルン)europe-central2
(ワルシャワ、ポーランド)europe-west10
(ベルリン)低 CO2
europe-west12
(トリノ)europe-west2
(ロンドン、イギリス)低 CO2
europe-west3
(フランクフルト、ドイツ)europe-west6
(チューリッヒ、スイス)低 CO2
me-central1
(ドーハ)me-central2
(ダンマーム)northamerica-northeast1
(モントリオール)低 CO2
northamerica-northeast2
(トロント)低 CO2
southamerica-east1
(サンパウロ、ブラジル)低 CO2
southamerica-west1
(サンティアゴ、チリ)低 CO2
us-west2
(ロサンゼルス)us-west3
(ソルトレイクシティ)us-west4
(ラスベガス)
Cloud Run サービスをすでに作成している場合は、Google Cloud コンソールの Cloud Run ダッシュボードにリージョンが表示されます。
既存のワーカープールの新しいリビジョンをデプロイする
ワーカープールの構成設定を変更すると、コンテナ イメージに変更がない場合でも、新しいリビジョンが作成されます。作成されたリビジョンは変更できません。
コンテナ イメージは、デプロイ時に Cloud Run によってインポートされます。Cloud Run は、リビジョンによって使用されている限り、コンテナ イメージのコピーを保持します。
Google Cloud コンソール、Google Cloud CLI、Terraform のいずれかを使用し、それぞれの手順に従って操作を行います。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
メニューから [ワーカープール] を選択し、更新するワーカープールを選択したら、[新しいリビジョンの編集とデプロイ] をクリックして [ワーカープールのリビジョンをデプロイする] フォームを表示します。
必要に応じて、デプロイする新しいコンテナ イメージの URL を指定します。
必要に応じてコンテナを構成します。
必要に応じて、ワーカープールのインスタンス数を更新します。
必要に応じて、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックして、該当するタブでその他のオプション設定を指定します。
ワーカープールの更新が完了したら、[デプロイ] をクリックします。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
コンテナ イメージをデプロイするには:
次のコマンドを実行します。
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
次のように置き換えます。
- WORKER_POOL: デプロイ先のワーカープールの名前。ワーカープールがまだ存在しない場合、このコマンドはデプロイ中にワーカープールを作成します。このパラメータは省略できますが、省略するとワーカープールの名前を入力するよう求められます。ワーカープール名は 49 文字以下で、リージョンとプロジェクトごとに一意の名前を使用する必要があります。また、プロジェクトの既存のサービス名と同じ名前は使用できません。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。--image
フラグを指定しないと、deploy コマンドはソースコードからのデプロイを試行します。
リビジョン サフィックスは、新しいリビジョンに自動的に割り当てられます。独自のリビジョン サフィックスを指定する場合は、gcloud CLI パラメータ
--revision-suffix
を使用します。デプロイが完了するまで待ちます。正常に完了すると、Cloud Run に成功メッセージと、デプロイされたワーカープールのリビジョン情報が表示されます。
構成ファイルに変更を加えます。
Terraform 構成を適用します。
terraform apply
「
yes
」と入力して、記述されている操作を適用することを確認します。
Terraform
新しいワーカープールをデプロイするの例で説明されているように Terraform を設定していることを確認します。
他の Google Cloud プロジェクトからイメージをデプロイする
他の Google Cloud プロジェクトからイメージをデプロイするには、ご自身または管理者がデプロイ担当者アカウントと Cloud Run サービス エージェントに必要な IAM ロールを付与する必要があります。
デプロイ担当者アカウントに必要なロールについては、必要なロールをご覧ください。
Cloud Run サービス エージェントに必要なロールを付与するには、次の手順をご覧ください。
Google Cloud コンソールで、Cloud Run ワーカープールのプロジェクトを開きます。
[Google 提供のロール付与を含む] を選択します。
Cloud Run サービス エージェントのメールアドレスをコピーします。このアドレスには、@serverless-robot-prod.iam.gserviceaccount.com という接尾辞が付いています。
使用するコンテナ レジストリを所有するプロジェクトを開きます。
[追加] をクリックして、新しいプリンシパルを追加します。
[新しいプリンシパル] フィールドに、先ほどコピーしたサービス アカウントのメールアドレスを貼り付けます。
Container Registry を使用している場合は、[ロールを選択] プルダウン メニューで、[ストレージ] -> [Storage オブジェクト閲覧者] を選択します。Artifact Registry を使用している場合は、[Artifact Registry] -> [Artifact Registry 読み取り] のロールを選択します。
Cloud Run ワーカープールを含むプロジェクトにコンテナ イメージをデプロイします。
他のレジストリからイメージをデプロイする
Artifact Registry または Docker Hub に保存されていない公開コンテナ イメージまたは限定公開コンテナ イメージをデプロイするには、Artifact Registry のリモート リポジトリを設定します。
Artifact Registry リモート リポジトリを使用すると、次のことが可能になります。
- 公開コンテナ イメージをデプロイします(例: GitHub Container Registry(
ghcr.io
))。 - 認証を必要とする限定公開リポジトリ(JFrog Artifactory や Nexus など)からコンテナ イメージをデプロイします。
Artifact Registry リモート リポジトリを使用できない場合は、docker push
を使用して Cloud Run にデプロイすることで、コンテナ イメージを一時的に pull して Artifact Registry に push できます。Cloud Run はデプロイ時にコンテナ イメージをインポートします。その後、Artifact Registry からイメージを削除できます。
ワーカープールに複数のコンテナ(サイドカー)をデプロイする
サイドカーを使用した Cloud Run のデプロイでは、メインのワーカープール コンテナと 1 つ以上のサイドカー コンテナがあります。サイドカーは、localhost ポートを使用して相互に通信し、ワーカープール コンテナと通信できます。localhost ポートは、使用しているコンテナによって異なります。
ワーカープール コンテナを含め、インスタンスごとに最大 10 個のコンテナをデプロイできます。インスタンス内のすべてのコンテナは同じネットワーク名前空間を共有し、メモリ内共有ボリュームを使用してファイルを共有できます。
カスタムの組織のポリシーを作成して、すべてのデプロイで特定のサイドカーの使用を必須にできます。
サイドカー コンテナを使用してサービスをデプロイする
Google Cloud CLI または Terraform を使用して複数のコンテナを Cloud Run ワーカープールにデプロイするには、次の操作を行います。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
複数のコンテナをワーカープールにデプロイするには、次のコマンドを実行します。
gcloud beta run worker-pools deploy WORKER_POOL \ --container WORKER_POOL_CONTAINER_NAME \ --image='WORKER_POOL_IMAGE' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
次のように置き換えます。
- WORKER_POOL: デプロイ先のワーカープールの名前。このパラメータを省略すると、ワーカープール名の入力を求められます。
- WORKER_POOL_CONTAINER_NAME: ワーカープール コンテナの名前。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - SIDECAR_CONTAINER_NAME: サイドカー コンテナの名前(
sidecar
など)。 - SIDECAR_IMAGE: サイドカー コンテナ イメージへの参照。
deploy コマンドで各コンテナを構成するには、次のように、
container
パラメータの後に各コンテナの構成を指定します。gcloud beta run worker-pools deploy WORKER_POOL \ --container CONTAINER_1_NAME \ --image='WORKER_POOL_IMAGE' \ --set-env-vars=KEY=VALUE \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
デプロイが完了するまで待ちます。正常に完了すると、Cloud Run に成功メッセージが表示されます。
- WORKER_POOL: ワーカープールの名前。
- REGION: Google Cloud リージョン(例:
europe-west1
)。 - CONTAINER_NAME: コンテナの名前。
- IMAGE_URL: ワーカープールを含むコンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
など)。 - SIDECAR_CONTAINER_NAME: サイドカー コンテナの名前。
- SIDECAR_IMAGE_URL: サイドカー コンテナ イメージへの参照。
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
name = "CONTAINER_NAME"
image = "IMAGE_URL"
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE_URL"
}
}
}
次のように置き換えます。
サイドカーを使用したデプロイで使用できる注目の機能
一部のコンテナが Deployment の他のコンテナよりも先に起動しなければならない依存関係がある場合は、複数のコンテナを含む Deployment にコンテナの起動順序を指定できます。
他のコンテナに依存するコンテナがある場合は、Deployment でヘルスチェックを使用する必要があります。ヘルスチェックを使用すると、Cloud Run はコンテナの起動順序に従い、次のコンテナを起動する前に各コンテナの健全性を確認します。ヘルスチェックがない場合、Cloud Run は、依存しているコンテナがまだ実行されていない場合や起動に失敗した場合でも、すべてのコンテナを起動しようとします。
1 つのインスタンス内の複数のコンテナが、共有するメモリ内ボリュームにアクセスできます。このボリュームは、作成したマウント ポイントを介して各コンテナからアクセスできます。
次のステップ
新しいワーカープールをデプロイしたら、次の操作を行うことができます。