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

デプロイのオプション

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

各サービスは固有のエンドポイントを公開し、デフォルトでは受信リクエストを処理するために、基盤となるインフラストラクチャを自動的にスケーリングします。ただし、必要に応じてスケーリング動作を手動スケーリングに変更することもできます。サービスは、コンテナ、リポジトリ、ソースコードからデプロイできます。

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

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

この図は、3 つの 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 つ実行され、再試行される可能性があります。