Google Cloudのサービスのみを利用してCloud Runにアプリをデプロイしてみる
- Google Cloud
- インフラ
- コンテナ
- やってみた
投稿日:
はじめに
Google Cloudでは、Cloud RunやGKE、Cloud Functions等のコンテナを利用するためのサービスが複数あります。
それぞれのサービスにメリット・デメリットがありますが、今回はフルマネージドでデプロイが非常にシンプルなCloud Runにアプリケーションをデプロイしてみたいと思います。
なお、今回はソースコード リポジトリにCloud Source Repositoriesを利用し、Google Cloudのサービスのみでデプロイを実施します。
事前準備
- Google Cloud のプロジェクトを作成し、課金を有効にしておきます。
※ここでは詳細は割愛します。Googleのドキュメントを参照してください。 - アプリケーションのソースコードを用意しておきます。今回はGoogle社より提供されているPHPのサンプルコードを利用します。
参考URL:https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-php-service?hl=ja
前提条件
本記事内で利用するサービスアカウントや権限、パラメータは必要箇所を除きデフォルト値を利用していますので、実運用で利用する場合は、要件に応じた設計が必要となります。
利用サービス
- Cloud Source Repositories
Google Cloud でホストされている多機能のプライベートGitリポジトリ - Artifact Registry
アーティファクトを保存、管理、保護するコンテナレジストリ - Cloud Build
ソースコードからビルド、デプロイを行うビルドサービス - Cloud Run
コンテナを直接実行できるフルマネージドなコンピューティング プラットフォーム
構成図
今回構築する環境の構成イメージは以下となります。

構成の流れ
①APIの有効化
②Cloud Source Repositoriesの作成、ソースコードのPush
③Artifact Registryでのリポジトリの作成
④ビルドトリガーの作成、トリガーの実行
⑤Cloud Runへのデプロイ
①APIの有効化
初めに、今回利用するサービスのAPIを有効化します。APIの有効化はGoogle Cloudコンソールより行います。
1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「APIとサービス」をクリックします。

2. 「APIとサービスを有効にする」をクリックします。

3. 検索窓にAPIを有効化するサービス名を入力し、Enterキーを押下します。ここでは「Cloud Build」を例として入力します。

4. 「Cloud Build API」をクリックします。

5. 「有効にする」をクリックします。

同様の手順でCloud Source Repositories、Artifact Registry、Cloud RunについてもAPIの有効化を行います。
②Cloud Source Repositoriesの作成、ソースコードのPush
ソースコードを管理するCloud Source Repositoriesの作成と、ローカルPCからソースコードのPushを行います。
1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「Source Repositories」をクリックします。

2. 「開始」をクリックします。

3. 「利用の開始」というメッセージが表示された場合は「リポジトリを作成」をクリックします。

4. 「新しいリポジトリを作成」を選択し、「続行」をクリックします。

5. リポジトリ名を入力し、利用するプロジェクトを選択して「作成」をクリックします。

6. 「SSH認証」、「Google Cloud CLI」、「手動で生成した認証情報」のいずれかで認証を行い、ローカルGitリポジトリにリポジトリのクローンを作成します。
※ローカルGitリポジトリからコードをpushすることも可能です。
※各認証方法の設定手順は以下のドキュメントを参照してください。
参考URL:https://cloud.google.com/source-repositories/docs/authentication?hl=ja

7. クローン作成後、ローカルPC側でディレクトリを移動し、ソースコードを配置します。
8. 以下のコマンドを順に実行し、Cloud Source RepositoriesのリポジトリにソースコードをPushします。

9. リポジトリにソースコードがPushされたことを確認します。

今回Pushしたファイルは以下となります。
<サンプルアプリケーション>
- dockerignore
- Dockerfile
- index.php
サンプルアプリケーションはGoogle社より提供されているPHPで作成されたアプリケーションを利用しています。当該アプリケーションをデプロイすると、コンテナ内にApache ウェブサーバーを構成し、「Hello World!」をWebページとして表示します。
詳細は下記公式ドキュメントを参照してください。
参考URL:https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-php-service?hl=ja
<ビルド構成ファイル>
- cloudbuild.yaml
「cloudbuild.yaml」にはCloud Build がタスクを実行するための指示が記述されています。

処理内容としては、ソースコードからDockerイメージをビルドし、Artifact Registryにある「docker-repo」というリポジトリにPushを行います。
③Artifact Registryでのリポジトリの作成
Artifact RegistryにDockerイメージをビルドするリポジトリを作成します。
1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「Artifact Registry」をクリックします。

2. 「リポジトリを作成」をクリックします。

3. 名前を入力し、形式は「Docker」を選択します。リージョンは「asia-northeast1(東京)」を選択し、その他はデフォルト値のままで「作成」をクリックします。


4. リポジトリが作成されていることを確認します。

④ビルドトリガーの作成、トリガーの実行
ビルドトリガーを作成し、手動でトリガーを実行します。
1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「Cloud Build」をクリックします。

2. 「リポジトリ」画面に「②Cloud Source Repositoriesの作成、ソースコードのPush」の手順で作成したリポジトリが表示されていることを確認し、「︙」をクリックして「トリガーを追加」をクリックします。

3. 下記設定値を入力または選択し、その他はデフォルトのままで「作成」をクリックします。
名前:任意の名前
リージョン:global(グローバル)
イベント:手動呼び出し
リビジョン:ブランチ
ブランチ名:main
形式:Cloud Build構成ファイル(yamlまたはjson)


4. トリガーが作成されたことを確認し、「実行」をクリックします。

5. 特にパラメータは変更せず、「トリガーの実行」をクリックします。

6. 「履歴」ページにてビルドのステータスが確認できます。ビルドが正常終了することを確認します。

7. ビルドが正常終了すると、Artifact RegistryのリポジトリにDockerイメージが作成されます。

⑤Cloud Runへのデプロイ
ビルドしたDockerイメージをCloud Runにデプロイします。
1. Artifact Registryのリポジトリに作成されたDockerイメージをクリックするとパッケージが表示されるので、「︙」をクリックして「Cloud Runにデプロイ」をクリックします。

2. サービス名を入力してリージョンに「asia-northeast1(東京)」を選択します。今回、アプリケーションは外部公開するWebアプリケーションを想定しているため、「未認証の呼び出しを許可」にチェックを付け、その他はデフォルトのままで「作成」をクリックします。


3. デプロイが正常終了することを確認します。生成されたURLをクリックすると、コンテナ上にデプロイされたWebページが表示されます。


今回の記事の内容はこれで終了となります。
次回予告
今回はCloud Runにアプリケーションをデプロイするまでの流れを理解するため、1ステップ毎手動で構築を行いました。
次回はCloud Buildを利用したCloud RunのCI/CDについて記載予定です。