はじめに
今回はGoogle CloudのサーバーレスサービスであるGoogle CloudRunについて学びます。
Google CloudRunは、Google Cloudが提供するサーバーレスのコンテナ実行環境です。これにより、開発者はインフラストラクチャの管理を気にせずに、コードをデプロイし実行できます。この記事では、CloudRunの基本的な概念と機能を理解し、簡単な「Hello World」アプリをデプロイする方法を紹介します。対象読者は、CloudRunやサーバーレスコンピューティングに初めて触れる方です。
Google Cloud アカウント作成手順
1. ブラウザで https://cloud.google.com にアクセスします。ブラウザで https://cloud.google.com にアクセスします。
2. 右上の「無料で開始」または「コンソールに移動」をクリックします。
3. Googleアカウントでサインインします。Googleアカウントをお持ちでない場合は、新規作成してください。
4. 国と組織の種類、支払い情報を入力します。
5. 利用規約に同意し、「続行」をクリックします。
6. アカウントのセットアップが完了したら、Google Cloud Consoleにリダイレクトされます。
gcloudコマンドラインツールのインストール
Windows用
1. https://cloud.google.com/sdk/docs/install にアクセスします。1. https://cloud.google.com/sdk/docs/install にアクセスします。
2. 「Windows」タブを選択し、インストーラーをダウンロードします。
3. ダウンロードしたインストーラー(GoogleCloudSDKInstaller.exe)を実行します。ダウンロードしたインストーラー(GoogleCloudSDKInstaller.exe)を実行します。インストールウィザードの指示に従って進みます。
4. 「Cloud SDK のインストール先を選択してください」で適切なディレクトリを選択します。コンポーネントの選択画面では、デフォルトのままで問題ありません。
5. インストールが完了したら、「完了」をクリックします。
macOS/Linux用
1. ターミナルを開き、以下のコマンドを実行してインストールスクリプトをダウンロードします。
Copycurl -O https://dl.google.com/dl/cloudsdk/channels/rapid/install_google_cloud_sdk.bash
2. ダウンロードしたスクリプトを実行します。
Copybash install_google_cloud_sdk.bash
3. プロンプトに従って、インストール先ディレクトリを選択します(デフォルトでよい場合はEnterキーを押します)。インストールが完了したら、ターミナルを再起動するか、以下のコマンドでシェルを更新します。
Copysource ~/.bashrc
または
Copysource ~/.zshrc
gcloudの初期化
1. コマンドプロンプト(Windows)またはターミナル(macOS/Linux)を開き、以下のコマンドを実行してgcloudを初期化します。
gcloud init
2. プロンプトに従って、Googleアカウントにログインし、プロジェクトを選択します。
3. インストールが成功したことを確認するため、以下のコマンドを実行します。
gcloud versiongcloudバージョン
このコマンドがgcloudのバージョン情報を表示すれば、インストールは成功しています。
必要なコンポーネントのインストール
以下のコマンドで必要なコンポーネントをインストールできます。
gcloud components install kubectl
ステップ1:プロジェクトの作成
1. Google Cloud Consoleにログインし、左上の「プロジェクトを選択」をクリック。
2. 「新しいプロジェクト」をクリックし、プロジェクト名を cloudrun-hello-world-project に設定して「作成」をクリック。
※必要に応じて、組織や場所を設定します(通常はデフォルトのままで問題ありません)。
3. 作成したプロジェクトがリストに表示されるので、作成したプロジェクトを選択。
4. 左側のナビゲーションメニューから「APIとサービス」→「ダッシュボード」を選択、「APIとサービスを有効化」をクリック。
5. 「Cloud Run API」を検索し、クリックして有効にする。
ステップ2:ローカル環境のセットアップ
1. 任意のディレクトリに移動して、新しいディレクトリを作成し、その中にプロジェクトを構築。
mkdir cloudrun-hello-world
cd cloudrun-hello-world
※任意でPython仮想環境の設定。
プロジェクト固有の依存関係を隔離できるよう、Pythonの仮想環境を作成し、有効化することをお勧めします。
python -m venv venv
source venv/bin/activate # Windowsの場合は `venv\Scripts\activate`
ステップ3:「Hello World」アプリケーションの作成
1. 作成したディレクトリに app.py ファイルを作成し、以下のコードを追加。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
2. requirements.txt ファイルを作成し、Flaskを依存関係として追加。
Flask==2.0.1フラスコ==2.0.1
Werkzeug==2.0.1
3. 必要なパッケージをインストール。
pip install -r requirements.txt
4. Dockerfileの作成4.Dockerfileの作成4.Dockerfileの作成4.Dockerfileの作成
プロジェクトディレクトリに Dockerfile を作成し、以下の内容を追加。
# Use the official Python image.
# https://hub.docker.com/_/python
FROM python:3.10-slim
# Set the working directory to /app
WORKDIR /appWORKDIR /アプリ
# Copy the current directory contents into the container at /app# 現在のディレクトリの内容を /app のコンテナにコピーします
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 8080 available to the world outside this container
EXPOSE 8080
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
ここまでで作成したファイルは以下。
- app.py
- Dockerfile
- requirements.txt
ここまでで、アプリケーションがローカル環境で準備できたので、次はこのアプリケーションをコンテナイメージとしてビルドし、Google Container Registryにプッシュしてから、Cloud Runにデプロイします。
ステップ3:コンテナイメージのビルドとプッシュ
1. コンソールでご自身のプロジェクトID($PROJECT_ID)を確認し、プロジェクトを設定します。
gcloud config set project $PROJECT_ID
2. コンテナイメージをビルドし、Google Container Registryにプッシュする。
gcloud builds submit --tag gcr.io/$PROJECT_ID/hello-world
ステップ4:Cloud Runサービスのデプロイ
1. サービスエージェントがコンテナイメージにアクセスできるように権限を付与。
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
# デフォルトサービスアカウントに権限を付与
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/storage.objectViewer"
# Cloud Runサービスエージェントに権限を付与
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/storage.objectViewer"
2. 正しいイメージURLを使用してCloud Runサービスをデプロイ。
gcloud run deploy hello-world-service \
--image gcr.io/$PROJECT_ID/hello-world \
--platform managed \
--region asia-northeast1 \
--allow-unauthenticated
3. デプロイ後、CloudRunはURLを提供するので、そのURLをブラウザで開く。「Hello World!」と表示されることを確認します。
さいごに
以上でデプロイ完了です。今回は、Google CloudRunの基本的な概念と機能を紹介し、簡単な「Hello World」アプリをデプロイする方法を解説しました。