Cloud Runで新しいサービスを作成する際、最初のステップとして「どこからコードを持ってくるか」を選択する場面に遭遇します。Google Cloud ConsoleのUIには、主に3つのオプションが提示されますが、それぞれが異なる開発ワークフローとユースケースに対応しています。
Cloud Runサービス作成時のソースオプション
Cloud Runサービスを作成する際の「ソース」の選択肢は、アプリケーションのデプロイ方法を決定します。
- 既存のコンテナ イメージから 1 つのリビジョンをデプロイする
- リポジトリから継続的にデプロイする(ソースまたは関数)
- インライン エディタで関数を作成する
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パイプラインを構築したい場合に非常に強力です。
- 「インライン エディタで関数を作成する」: アイデアを素早く試したり、非常にシンプルな機能をデプロイしたりする場合に便利です。
ご自身のアプリケーションの規模、開発のワークフロー、求める自動化のレベルに合わせて、最適なデプロイ方法を選択してください。
コメント