1. 概要
Cloud Run はフルマネージドのサーバーレス プラットフォームで、HTTP リクエスト経由で呼び出し可能なステートレス コンテナを実行できます。Cloud Run はサーバーレスです。インフラストラクチャ管理が一切不要なため、最も重要な作業であるアプリケーションの構築に集中できます。
Knative を基盤としており、Cloud Run を使用してフルマネージドでコンテナを実行するか、Cloud Run on GKE を使用して Google Kubernetes Engine クラスタでコンテナを実行するかを選択できます。
学習内容
このラボでは、次の方法について学びます。
- Cloud Run アプリケーションをデプロイする
前提条件
- このラボは、Cloud コンソール環境と Cloud Shell 環境に精通していることを前提としています。
2. 設定と要件
Cloud プロジェクトの設定
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。
- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。この値はいつでも更新できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常、それが何であるかは関係ありません。ほとんどの Codelab では、プロジェクト ID を参照する必要があります(通常は
PROJECT_ID
として識別されます)。生成された ID が気に入らない場合は、別のランダムな ID を生成できます。または、ご自身でお試しになることもできます。このステップを終えた後は変更できず、プロジェクト期間中は維持されます。 - なお、3 つ目の値は、一部の API で使用される [プロジェクト番号] です。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に課金が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクト全体を削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
環境設定
検索バーの右側にあるアイコンをクリックして Cloud Shell をアクティブにします。
Cloud Shell で、Cloud Run API を有効にします。
gcloud services enable run.googleapis.com
承認するよう求められたら、[承認] をクリックします。] をクリックしてください。
成功すると次のようなメッセージが表示されます。
Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.
3. 申請の準備
まず、HTTP リクエストに応答する Express ベースのシンプルな Node.js アプリケーションを準備します。
Cloud Shell で、starter-nodejs
という名前の新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir starter-nodejs
cd starter-nodejs
次のコマンドを実行して、package.json
ファイルを作成します。
cat > ./package.json << EOF
{
"name": "cloudrun-starter-app",
"version": "1.0.0",
"description": "Node.js Starter Application",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"express": "^4.18.2"
}
}
EOF
上記のファイルには、スクリプトを開始するコマンドと、Express ウェブ アプリケーション フレームワークへの依存関係が含まれています。
次に、同じディレクトリに以下のコマンドを実行して index.js
ファイルを作成します。
cat > ./index.js << EOF
const express = require('express');
const app = express();
app.get('/', (req, res) => {
console.log('Received a request.');
res.send("Hello Cloud Run!");
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
EOF
このコードは、PORT 環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。これでアプリは完成しました。このアプリをコンテナ化してデプロイする準備が整いました。
4. Cloud Run アプリケーションをデプロイする
次のコマンドを実行して、アプリケーションをデプロイします。
gcloud run deploy starter-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--max-instances=3
Artifact Registry リポジトリの作成を確認します。
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created. Do you want to continue (Y/n)? y
上記のコマンドの結果として、次のステップが実行されます。
Cloud コンソールで、Cloud Build、Cloud Storage、Artifact Registry、Cloud Run のステップの出力を確認する。
5. 完了
これで、これで、アプリケーションが Cloud Run にデプロイされました。
学習した内容
- Cloud Run にスターター アプリケーションをデプロイする方法
次のステップ:
Cymbal Eats の他の Codelab を確認する:
- Eventarc を使用した Cloud Workflows のトリガー
- Cloud Storage からのイベント処理のトリガー
- Cloud Run から Private Cloud SQL への接続
- Cloud Run からフルマネージド データベースへの接続
- Identity-Aware Proxy(IAP)でサーバーレス アプリケーションを保護する
- Cloud Scheduler を使用した Cloud Run ジョブのトリガー
- Cloud Run への安全なデプロイ
- Cloud Run の上り(内向き)トラフィックの保護
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金を停止する最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。