Cloud Runサービスの作成方法 3パターンを解説! あなたのコードはどこから?

Cloud Runで新しいサービスを作成する際、最初のステップとして「どこからコードを持ってくるか」を選択する場面に遭遇します。Google Cloud ConsoleのUIには、主に3つのオプションが提示されますが、それぞれが異なる開発ワークフローとユースケースに対応しています。

Cloud Runサービス作成時のソースオプション

Cloud Runサービスを作成する際の「ソース」の選択肢は、アプリケーションのデプロイ方法を決定します。

  1. 既存のコンテナ イメージから 1 つのリビジョンをデプロイする
  2. リポジトリから継続的にデプロイする(ソースまたは関数)
  3. インライン エディタで関数を作成する

1. 「既存のコンテナ イメージから 1 つのリビジョンをデプロイする」

このオプションは、すでにビルド済みでコンテナレジストリ(例: Artifact Registry, Docker Hub)に存在するコンテナイメージをCloud Runにデプロイする場合に選択します。

何をするか:

  • 指定したコンテナイメージのパス(例: gcr.io/my-project/my-app:latest)をCloud Runに伝え、そのイメージを使って新しいリビジョンを作成し、デプロイします。
  • ビルドは行われません。イメージはすでに外部でビルドされていることが前提です。

特徴:

  • 高速なデプロイ: コードのビルドが不要なため、デプロイプロセスが高速です。
  • 柔軟なビルドプロセス: Cloud Build以外のCI/CDツール(例: Jenkins, GitLab CI/CD, GitHub Actionsなど)でビルドしたイメージを使用できます。
  • 安定した運用: 一度ビルドされたイメージは不変であるため、デプロイの再現性が高いです。

ユースケース:

  • 成熟したCI/CDパイプライン: 外部のCI/CDツールでコンテナイメージのビルドとテストを自動化しており、その成果物をCloud Runにデプロイしたい場合。
  • ローカルで開発・ビルド済み: ローカル環境でDockerコンテナをビルドし、テストが完了したイメージをCloud Runに手動でデプロイしたい場合。
  • 異なるレジストリからのデプロイ: Artifact Registry以外のコンテナレジストリに保存されているイメージを使用したい場合。

2. 「リポジトリから継続的にデプロイする(ソースまたは関数)」

このオプションは、ソースコードリポジトリ(例: GitHub, Cloud Source Repositories)からCloud Buildと連携して、コンテナイメージのビルドとデプロイを自動化したい場合に選択します。

何をするか:

  • 指定したソースコードリポジトリ(Gitリポジトリ)とブランチを選択します。
  • Cloud Build を使用して、そのソースコードから自動的にコンテナイメージをビルドし、コンテナレジストリにプッシュします。
  • ビルドされたイメージを使ってCloud Runに新しいリビジョンをデプロイします。
  • 継続的デプロイ (CD) を設定すると、選択したブランチにコードがプッシュされるたびに、自動的にビルドとデプロイが実行されます。

特徴:

  • 開発者の利便性: コードをGitにプッシュするだけで、ビルドからデプロイまでが自動化されるため、開発者の手間が大幅に削減されます。
  • CI/CDの簡易構築: GCPが提供する統合されたCI/CD環境を簡単に構築できます。
  • 再現性の向上: ソースコードからイメージビルドまでが自動化されるため、一貫性のあるデプロイが可能です。

ユースケース:

  • 一般的なWebアプリケーションやAPIの開発: コードの変更頻度が高く、継続的なデプロイを必要とするサービス。
  • CI/CDを初めて構築する場合: GCPの統合されたツールを活用して、簡単にCI/CDパイプラインを構築したい場合。
  • ソースコードから直接デプロイしたい場合: Dockerfileを自分で書きたくない場合でも、Buildpacksがサポートする言語であれば自動ビルドが可能です。

3. 「インライン エディタで関数を作成する」

このオプションは、非常にシンプルな、単一ファイルの関数をCloud Runにデプロイする場合に選択します。
これは、実質的にCloud Functionsのような、HTTPトリガーの「関数」をCloud Runの柔軟な環境で実行したい場合に利用できます。

何をするか:

  • Cloud ConsoleのUIに表示されるインラインエディタに直接コードを記述します。
  • 対応言語(例: Python, Node.js, Goなど)を選択し、トリガーされる関数名を指定します。
  • 指定されたコードは、内部的にCloud BuildとBuildpacksを使用してコンテナイメージにビルドされ、Cloud Runにデプロイされます。

特徴:

  • 手軽なプロトタイピング: 数行のコードでシンプルな機能をすぐにデプロイし、動作確認ができます。
  • 手軽さ: ローカルに開発環境がなくても、ブラウザだけでコードを書いてデプロイできます。
  • 学習用途: Cloud Runの基本的な動作を試すのに最適です。

ユースケース:

  • 非常にシンプルなHTTPエンドポイント: 例: 「Hello World」を返すAPI、簡単なデータ変換、Webhookの受信とログ記録など。
  • プロトタイピングやPoC (Proof of Concept): アイデアを素早く形にしてテストしたい場合。
  • 学習やデモンストレーション: Cloud Runの基本的な使い方を学ぶ場合。

ユースケース:

  • 複雑なアプリケーションや複数のファイルからなるプロジェクトには不向きです。
  • 依存関係の管理がインラインエディタでは難しくなります。
  • コードのバージョン管理がUIに限定されるため、本格的な開発には向いていません。

3つのオプションの比較表

特徴既存のコンテナ イメージからデプロイするリポジトリから継続的にデプロイするインライン エディタで関数を作成する
ソースコードの場所外部レジストリのコンテナイメージGitリポジトリCloud Console UI上のエディタ
ビルドの実行場所外部でビルド済みCloud Buildが自動実行Cloud Buildが自動実行
CI/CD外部CI/CDツールと連携GCP内での自動CI/CDを構築手動での簡易デプロイ
開発ワークフローイメージビルドとデプロイを分離コードプッシュで自動デプロイブラウザで手軽に作成・デプロイ
最適なユースケース成熟したCI/CD、手動デプロイ一般的なWeb/API開発、自動化プロトタイピング、簡単な関数
コードの複雑さコンテナイメージ次第Gitリポジトリ次第非常にシンプル

まとめ

Cloud Runサービスの作成におけるこれら3つのオプションは、それぞれ異なる開発フェーズや運用ニーズに対応しています。

  • 「既存のコンテナ イメージから」: 既にビルドプロセスが確立されている場合や、高速なデプロイを求める場合に最適です。
  • 「リポジトリから継続的にデプロイする」: 日常的な開発と自動化されたCI/CDパイプラインを構築したい場合に非常に強力です。
  • 「インライン エディタで関数を作成する」: アイデアを素早く試したり、非常にシンプルな機能をデプロイしたりする場合に便利です。

ご自身のアプリケーションの規模、開発のワークフロー、求める自動化のレベルに合わせて、最適なデプロイ方法を選択してください。

コメント

タイトルとURLをコピーしました