Cloud Buildを利用してCloud RunのCI/CD環境を構成してみる

  • Google Cloud
  • インフラ
  • コンテナ
  • やってみた

投稿日:

はじめに

前回の記事ではデプロイの流れを理解するため、手動でCloud Runにアプリケーションをデプロイしましたが、今回はCloud Buildを利用してCloud RunのCI/CD環境を構成し、自動でアプリケーションのデプロイを行ってみたいと思います。

なお、今回はソースコード リポジトリに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の作成
③Artifact Registryでのリポジトリの作成
④ビルドトリガーの作成
⑤ソースコードのPush(=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の作成

ソースコードを管理するCloud Source Repositoriesの作成を行います。

今回、ソースコードのPushをトリガーとしてCloud Runにアプリケーションのデプロイを行うため、このタイミングでは適当なファイルを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されたことを確認します。

画面イメージ

③Artifact Registryでのリポジトリの作成

Artifact RegistryにDockerイメージをビルドするリポジトリを作成します。

1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「Artifact Registry」をクリックします。

画面イメージ

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

画面イメージ

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

画面イメージ
画面イメージ

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

画面イメージ

④ビルドトリガーの作成

ビルドトリガーを作成します。

1. Google Cloud コンソールにて画面左上の「≡」をクリックし、「Cloud Build」をクリックします。

画面イメージ

2. 「設定」をクリックします。

画面イメージ

3. Cloud BuildからCloud Runにデプロイが可能となるよう、Cloud Run 管理者ロールのステータスを有効にし、権限を付与します。

画面イメージ

4. 「追加の手順が必要になることがあります」というメッセージが表示されるので、「すべてのサービスアカウントにアクセス権を付与」をクリックします。

画面イメージ

5. ステータスが有効になったことを確認します。

画面イメージ

6. 画面左側にあるメニューから「トリガー」をクリックします。

画面イメージ

7. 「トリガーを作成」をクリックします。

画面イメージ

8. 下記設定値を入力または選択し、その他はデフォルトのままで「作成」をクリックします。

名前:任意の名前
リージョン:global(グローバル)
イベント:ブランチにpushする
リポジトリ:「②Cloud Source Repositoriesの作成」の手順で作成したリポジトリ
ブランチ:^main$
形式:Cloud Build構成ファイル(yamlまたはjson)

画面イメージ
画面イメージ
画面イメージ

9. トリガーが作成されたことを確認します。

画面イメージ

⑤ソースコードのPush(=Cloud Runへのデプロイ)

ソースコードをCloud Source RepositoriesのリポジトリにPushし、アプリケーションをCloud Runにデプロイします。

1. ソースコードをCloud Source Repositoriesのリポジトリに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にある「demo-repo」というリポジトリにPushを行います。
その後、Cloud Runにアプリケーションをデプロイします。

2. Pushをトリガーにビルドプロセスが開始します。

画面イメージ

3. ビルドプロセスが完了すると、Artifact RegistryにDockerイメージがビルドされ、Cloud Runにアプリケーションがデプロイされます。

<Artifact Registry>

画面イメージ

<Cloud Run>

画面イメージ

4. 作成されたサービスをクリックします。

画面イメージ

5. 生成されたURLをクリックします。

画面イメージ

6. コンテナ上にデプロイしたWebページが表示されます。

画面イメージ

7. ソースコードを修正し、再度Pushを行います。
※今回はWebページに「Hello Japan!」と表示されるように修正します。

8. Pushをトリガーに再度ビルドプロセスが開始します。

画面イメージ

9. ビルドプロセスが完了するとWebページの内容が修正されています。
※URLの変更はありません。

画面イメージ

10. Cloud Runを確認すると、リビジョンが更新されています。

画面イメージ

今回の記事の内容はこれで終了となります。

おわりに

今回はCloud Buildを利用してCloud RunのCI/CD環境を構成し、自動でアプリケーションのデプロイを行いました。簡易的な手順でCI/CD環境を構成できるため、皆様もぜひ試していただければと思います。

著者紹介

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

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

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

Pickup