このチュートリアルでは、Compute Engine を始める方法を説明します。チュートリアルに沿って、Node.js ウェブアプリの Hello World を Compute Engine にデプロイします。App Engine を初めて使用する場合は、App Engine スタンダード環境をご覧ください。
目標
- Cloud Shell を使用して、Hello World サンプルアプリをダウンロードしてデプロイします。
- Hello World サンプルアプリを単一の Compute Engine インスタンスにデプロイします。
料金
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
Google Cloud Console から、Cloud Shell でアプリを開きます。
Cloud Shell を使用すると、ブラウザからコマンドラインで直接クラウド リソースにアクセスできます。
-
リポジトリのクローン作成に同意する場合は、[Confirm] をクリックしてサンプルコードをダウンロードし、アプリ ディレクトリに変更します。
- Cloud Shell で、gcloud CLI を構成して新しい Google Cloud プロジェクトを使用します。
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Cloud Shell でアプリを実行する
前のセクションで [Cloud Shell に移動] をクリックした場合、Cloud Shell によって nodejs-getting-started
リポジトリのクローンがインスタンスに作成されました。インスタンスが起動されると、作業ディレクトリは ~/cloudshell_open/nodejs-getting-started/gce
になります。このディレクトリにない場合は、始める前にの手順をご覧ください。
依存関係をインストールします。
npm install
アプリを実行します。
npm start
Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。
ローカル ウェブサーバーを停止するには、Ctrl+C キーを押します。
Cloud Source Repositories の設定
Cloud Source Repositories API を有効にします。
Google Cloud Console で、[Cloud Source Repositories] に移動します。
[リポジトリを追加] を選択します。
[新しいリポジトリを作成] を選択し、[続行] をクリックします。
[リポジトリ名] フィールドに「
new-repo
」と入力します。[Project] フィールドに、このチュートリアルで作成または選択したプロジェクトのプロジェクト ID を入力し、[続行] をクリックします。
[ローカル Git リポジトリにリポジトリのクローンを作成]を選択します。
Cloud Shell でルートに戻り、[Google Cloud SDK] タブの手順に沿ってリポジトリのクローンを作成し、このタブを開いたままにします。
以下の指示の最後の手順を完了する前に、Cloud Shell で新しいリポジトリにアプリをコピーします。
cd new-repo cp ../cloudshell_open/nodejs-getting-started/gce/app.js app.js cp ../cloudshell_open/nodejs-getting-started/gce/package.json package.json
[Google Cloud SDK] タブの残りの手順に従って、リポジトリの変更を commit します。ブラウザを更新してコードがリポジトリに追加されたことを確かめ、リポジトリ
new-repo
にコードが追加されていることを確認します。
単一インスタンスへのデプロイ
このセクションでは、Compute Engine 上でアプリの単一インスタンスを実行する手順を順を追って説明します。
Cloud Shell から、アプリを実行する単一の Compute Engine インスタンス仮想マシン(VM)にアプリをデプロイできます。
起動スクリプトを使用してインスタンスを初期化する
インスタンスにコードのダウンロードと実行を指示するための手段が必要です。インスタンスの起動時または再起動時に常に実行される起動スクリプトをインスタンスに設定できます。
Hello World サンプルアプリに含まれる起動スクリプトは次のとおりです。
起動スクリプトによって次のタスクが実行されます。
Cloud Logging エージェントがインストールされます。このエージェントは syslog から自動的にログを収集します。
Supervisor をインストールして、アプリをデーモンとして実行します。
Cloud Source Repositories 内にあるアプリのソースコードのクローンを作成し、依存関係をインストールします。
アプリを実行するように Supervisor を構成します。アプリが予期せずに終了した場合や、管理者や他のプロセスにより強制終了された場合、Supervisor によりアプリを確実に再起動できます。また、Supervisor によりアプリの
stdout
とstderr
が syslog に送信され、Logging エージェントによって収集されます。
Compute Engine インスタンスを作成して構成する
Compute Engine インスタンスを作成します。
Linux / macOS
gcloud compute instances create my-app-instance \ --image-family=debian-9 \ --image-project=debian-cloud \ --machine-type=g1-small \ --scopes userinfo-email,cloud-platform \ --metadata app-location=us-central1-f \ --metadata-from-file startup-script=gce/startup-script.sh \ --zone us-central1-f \ --tags http-server
Windows
gcloud compute instances create my-app-instance ^ --image-family=debian-9 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=gce/startup-script.sh ^ --zone us-central1-f ^ --tags http-server
ゾーンを開発用のゾーン(
us-central1-a
など)に置き換えます。リージョンとゾーンの詳細については、地域とリージョンをご覧ください。これにより、新しいインスタンスの作成と、Google Cloud サービスへのアクセスの許可が行われ、起動スクリプトが実行されます。インスタンス名は
my-app-instance
です。インスタンス作成の進行状況を確認します。
gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
YOUR_ZONE
をインスタンスをデプロイしたゾーンに置き換えます。起動スクリプトが完了すると、次のメッセージが表示されます。
startup-script: INFO Finished running startup scripts.
インスタンスへのトラフィックを許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create default-allow-http-8080 \ --allow tcp:8080 \ --source-ranges 0.0.0.0/0 \ --target-tags http-server \ --description "Allow port 8080 access to http-server"
インスタンスの外部 IP アドレスを取得します。
gcloud compute instances list
アプリが実行されていることを確認するには、ブラウザで次の URL を入力します。
http://YOUR_INSTANCE_IP:8080
YOUR_INSTANCE_IP
をインスタンスの外部 IP アドレスに置き換えます。
インスタンスの管理とモニタリング
GCP Console を使用して、インスタンスのモニタリングと管理を行うことができます。
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
- Compute Engine リソースによって生成されたすべてのログを表示するには、[ログビューア] ページに移動します。[ログ エクスプローラ] に移動
Cloud Logging は、各種の一般的なサービス(
syslog
など)からログを収集するように自動的に構成されます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
個々のリソースの削除
gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all gcloud compute firewall-rules delete default-allow-http-8080
次のステップ
Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center を確認します。
アプリの構築に役立つその他の Node.js リソースについては、以下をご覧ください。
- インスタンス グループのデプロイメントの管理とモニタリングについては、Compute Engine > インスタンス グループ。
- URL マップやバックエンド サービスなどの負荷分散構成の管理については、ネットワーク サービス > 負荷分散。
- Firestore でセッションを処理する
- Identity-Aware Proxy でユーザーを認証する
- Google Kubernetes Engine にアプリをデプロイする
- その他の Google Cloud サービスを検索します。