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について記載予定です。

著者紹介

伊藤忠テクノソリューションズ株式会社 網 隆大

伊藤忠テクノソリューションズ株式会社
網 隆大

直近数年間、パブリッククラウドに関する技術を担当。最近はコンテナやCI/CD回りを学習中。

Pickup