このチュートリアルでは、Compute Engine を始める方法を説明します。このチュートリアルに沿って、Ruby ウェブアプリの Hello World を Compute Engine にデプロイします。App Engine を初めて使用する場合は、App Engine スタンダード環境をご覧ください。
目標
- Cloud Shell を使用して、Hello World サンプルアプリをダウンロードしてデプロイします。
- Hello World サンプルアプリを単一の Compute Engine インスタンスにデプロイします。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Google Cloud コンソールで、Cloud Shell でアプリを開きます。
Cloud Shell を使用すると、ブラウザからコマンドラインで直接クラウド リソースにアクセスできます。
-
リポジトリのクローン作成に同意する場合は、[Confirm] をクリックしてサンプルコードをダウンロードし、アプリ ディレクトリに変更します。
-
Cloud Shell で、新しい Google Cloud プロジェクトを使用するように gcloud CLI を構成します。
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Cloud Shell でアプリを実行する
Cloud Shell で、
bundleを使用してアプリの依存関係をインストールします。bundle installSinatra アプリを実行します。
bundle exec ruby app.rb -p 8080Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。
ローカル ウェブサーバーを停止するには、Ctrl+C キーを押します。
単一インスタンスへのデプロイメント
このセクションでは、Compute Engine 上でアプリの単一インスタンスを実行する手順を順を追って説明します。
Cloud Shell から、アプリを実行する単一の Compute Engine インスタンス仮想マシン(VM)にアプリをデプロイできます。
起動スクリプトを使用してインスタンスを初期化する
インスタンスにコードのダウンロードと実行を指示するための手段が必要です。インスタンスの起動時または再起動時に常に実行される起動スクリプトをインスタンスに設定できます。
起動スクリプトは次のタスクを実行します。
Cloud Logging エージェントがインストールされます。このエージェントは syslog から自動的にログを収集します。
Ruby 2.6.5、Bundler、およびそのシステムの依存関係をインストールします。
Cloud Source Repositories 内にあるアプリのソースコードのクローンを作成し、依存関係をインストールします。
Nginx をインストールして設定します。
Supervisor をインストールして、アプリをデーモンとして実行します。
アプリを実行するように Supervisor を構成します。アプリが予期せずに終了した場合や、管理者や他のプロセスにより強制終了された場合、Supervisor によりアプリを確実に再起動できます。また、Supervisor によりアプリの
stdoutとstderrが syslog に送信され、Logging エージェントによって収集されます。
Compute Engine インスタンスを作成して構成する
Compute Engine インスタンスを作成します。
Linux / macOS
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-a ^ --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-80 \ --allow tcp:80 \ --source-ranges 0.0.0.0/0 \ --target-tags http-server \ --description "Allow port 80 access to http-server"インスタンスの外部 IP アドレスを取得します。
gcloud compute instances listアプリが実行されていることを確認するには、ブラウザで次の URL を入力します。
http://YOUR_INSTANCE_IP
YOUR_INSTANCE_IPをインスタンスの外部 IP アドレスに置き換えます。
インスタンスの管理とモニタリング
Google Cloud コンソールを使用して、インスタンスのモニタリングと管理を行うことができます。
- Google Cloud コンソールで、[VM インスタンス] ページに移動します。
- 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。
-
Compute Engine リソースによって生成されたすべてのログを表示するには、ログ エクスプローラ ページに移動します。
[ログ エクスプローラ] に移動Cloud Logging は、各種の一般的なサービス(
syslogなど)からログを収集するように自動的に構成されます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除する
- Google Cloud コンソールで [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
個々のリソースの削除
gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all gcloud compute firewall-rules delete default-allow-http-80