デプロイ オプションとリソースモデル

デプロイのオプション

Cloud Run には、複数のデプロイ オプションがあります。どのデプロイ オプションを選択しても、Cloud Run のフルマネージドでスケーラビリティの高いインフラストラクチャで Cloud Run のサービスまたはジョブとして実行されるコンテナ イメージが作成されます。

コンテナ イメージ

Cloud Run のコンテナ ランタイム契約に準拠しているコンテナ イメージは、Cloud Run のサービスまたはジョブデプロイできます。

ソース

便利なように、Cloud Run では1 つのコマンドでソースコードをビルドしてデプロイできます。ソースをデプロイすると、Cloud Build はコードを変換して Artifact Registry に保存されるコンテナ イメージに変換します。Dockerfile を含むソース、またはサポートされている言語ランタイムのいずれかで記述されたソースをデプロイできます。

ソースは、Cloud Run のサービスまたはジョブにデプロイできます。

関数

クラウドのインフラストラクチャやサービスから出力されたイベントに応答する単一目的の関数をデプロイできます。対象のイベントが発生すると、関数がトリガーされます。

関数のデプロイは、関数コードのみを指定する必要がある特別なタイプのソースデプロイです。Cloud Run functions は、さまざまなサポート対象のプログラミング言語を使用して作成できます。

関数は Cloud Run サービスとしてデプロイされます。

git からの継続的なソースのデプロイ

Cloud Run を使用すると、Git からの継続的デプロイを構成できます。ソースのデプロイと同様に、Dockerfile を含むソースや、サポートされている言語ランタイムのいずれかで記述されたソースをデプロイできます。

Git からの継続的デプロイは Cloud Run サービスで使用できます。Cloud Build で Cloud Run のジョブ用に手動で構成できます。

Cloud Run サービス

サービスは Cloud Run のメインリソースの 1 つです。各サービスは特定の Google Cloud リージョンにあります。冗長性とフェイルオーバーのため、サービスはリージョン内の複数のゾーンに自動的に複製されます。1 つの Google Cloud プロジェクトで、複数のリージョンの多くのサービスを実行できます。

各サービスは固有のエンドポイントを公開し、受信リクエストを処理するため、基盤となるインフラストラクチャを自動的に拡張します。サービスは、コンテナ、リポジトリ、ソースコードからデプロイできます。

次の図は、サービスの Cloud Run リソースモデルを示しています。

Cloud Run のサービスとリビジョン

この図は、2 つの Cloud Run サービス Service AService BService C を含む Google Cloud プロジェクトを示しています。各サービスには複数のリビジョンがあります。

Service A では、多くのリクエストを受信しているため、複数のインスタンスが起動し、それぞれが 1 つのコンテナを実行します。Service B はリクエストを受信していないため、インスタンスは起動していません。Service C は、各リビジョン内でインスタンスごとに複数のコンテナを実行しています。リクエストを受信するのは Ingress コンテナのみです。複数のコンテナを使用するインスタンスは、それぞれ独立したユニットとしてスケーリングされます。

Cloud Run サービス リビジョン

サービスをデプロイするたびに、リビジョンが作成されます。リビジョンは、1 つ以上のコンテナ イメージと、環境変数、メモリ上限、リクエストの同時実行値などの構成で構成されます。

リビジョンは変更されません。作成されたリビジョンを変更することはできません。コンテナ イメージを新しい Cloud Run サービスにデプロイすると、最初のリビジョンが作成されます。その後、同じサービスに別のコンテナ イメージをデプロイすると、2 番目のリビジョンが作成されます。さらに、環境変数を設定すると、3 番目のリビジョンが作成されます。

リクエストは、最新で正常な状態のリビジョンに自動的にルーティングされます。

Cloud Run サービス インスタンス

リクエストを受信する各サービス リビジョンは、これらのすべてのリクエストを処理するために必要なインスタンス数に自動的にスケーリングされます。インスタンスは同時に多くのリクエストを受信する場合があります。リクエストの同時実行の設定を使用すると、リビジョンの各インスタンスに同時に送信できるリクエストの最大数を設定できます。

Cloud Run ジョブ

ジョブは特定の Google Cloud リージョンに配置され、完了するまで 1 つ以上のコンテナを実行します。ジョブは、特定のジョブ実行で並列に実行される 1 つまたは複数の独立したタスクで構成されます。

Cloud Run ジョブ実行

ジョブが実行されると、すべてのジョブタスクが開始されるジョブ実行が作成されます。ジョブ実行を成功させるには、ジョブ実行のすべてのタスクが正常に完了する必要があります。タスクにタイムアウトを設定し、タスクが失敗した場合の再試行回数を指定できます。いずれかのタスクで再試行の最大数を超えると、そのタスクは「失敗」とマークされ、ジョブは「失敗」とマークされます。デフォルトでは、タスクは最大 100 件まで並行して実行されますが、バッキング リソースで必要な場合は最大値を小さくできます。

Cloud Run ジョブタスク

ジョブの実行ごとに、複数のタスクが並列で実行されます。各タスクは 1 つのインスタンスを実行し、再試行される可能性があります。