このチュートリアルでは、Compute Engine を始める方法を説明します。チュートリアルに沿って、Go ウェブアプリの Hello World を Compute Engine にデプロイします。App Engine を初めて使用する場合は、App Engine スタンダード環境をご覧ください。
目標
- Cloud Shell を使用して、Hello World サンプルアプリをダウンロードしてデプロイします。
- Cloud Build を使用して 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 and Cloud Build APIs.
-
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 and Cloud Build APIs.
-
Google Cloud コンソールで、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 でローカル ウェブサーバーを起動します。
go build -o app ./app
Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。
ウェブブラウザに「
Hello, World!
」と表示されます。次に進む準備ができたら、Cloud Shell で Control + C キーを押してローカル ウェブサーバーを停止します。
単一インスタンスへのデプロイ
このセクションでは、Compute Engine 上でアプリの単一インスタンスを実行する手順を順を追って説明します。
Cloud Shell から、アプリを実行する単一の Compute Engine インスタンス仮想マシン(VM)にアプリをデプロイできます。
Cloud Build を使用してアプリをビルドする
Cloud Build を使用すると、アプリをビルドして tar ファイルに圧縮し、Cloud Storage バケットにこのファイルをアップロードできます。バケットは、Cloud Storage でデータを格納する基本的なコンテナです。
ターミナル ウィンドウで Cloud Storage バケットを作成します。ここで、
YOUR_BUCKET_NAME
はバケットの名前を表します。gcloud storage buckets create gs://YOUR_BUCKET_NAME
Cloud Storage バケットには任意の名前を付けることができます。プロジェクト ID と同じ名前をバケットに付けることをおすすめします。ただし、バケット名は Google Cloud 全体で一意でなければならないため、プロジェクト ID をバケット名として使用できないことがあります。
Cloud Build プロセスを開始します。
gcloud builds submit --substitutions=_DEPLOY_DIR=gs://
YOUR_BUCKET_NAME
,_DEPLOY_FILENAME=app.tar.gzgcloud builds submit
コマンドは、--substitutions
を使用して、作成された tar ファイルのアップロード先を構成します。その後、tar ファイルが Compute Engine インスタンスにダウンロードされます。Cloud Build は、YAML 構成ファイルを使用して、ビルドに必要な手順を定義します。
起動スクリプトを使用してインスタンスを初期化する
インスタンスにコードのダウンロードと実行を指示するための手段が必要です。インスタンスの起動時または再起動時に常に実行される起動スクリプトをインスタンスに設定できます。
インスタンスの最初の起動時には、起動スクリプトが実行されます。
起動スクリプトは次のタスクを実行します。
Cloud Logging エージェントをインストールして、アプリログをモニタリングするように構成します。
デプロイ用の tar ファイルをダウンロードして抽出します。
systemd
サービスを起動して、アプリを実行します。
Compute Engine インスタンスの作成と構成
Compute Engine インスタンスを作成します。
Linux / macOS
gcloud compute instances create my-app-instance \ --image-family=debian-10 \ --image-project=debian-cloud \ --machine-type=g1-small \ --scopes userinfo-email,cloud-platform \ --metadata-from-file startup-script=startup-script.sh \ --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" \ --zone YOUR_ZONE \ --tags http-server
YOUR_ZONE
の部分はus-central1-a
などの開発ゾーンに置き換えます。リージョンとゾーンの詳細については、地域とリージョンをご覧ください。--metadata app-location
フラグは、アプリがどこに tar ファイルをダウンロードするかを起動スクリプトに知らせます。Windows
gcloud compute instances create my-app-instance ^ --image-family=debian-10 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=startup-script.sh ^ --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" ^ --zone YOUR_ZONE ^ --tags http-server
YOUR_ZONE
の部分はus-central1-a
などの開発ゾーンに置き換えます。リージョンとゾーンの詳細については、地域とリージョンをご覧ください。--metadata app-location
フラグは、アプリがどこに tar ファイルをダウンロードするかを起動スクリプトに知らせます。これにより、新しいインスタンスの作成と、Google Cloud サービスへのアクセスの許可が行われ、起動スクリプトが実行されます。インスタンス名は
my-app-instance
です。インスタンス作成の進行状況を確認します。
gcloud compute instances get-serial-port-output my-app-instance --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 コンソールを使用できます。
- 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-80
次のステップ
Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center を確認します。
アプリの構築に役立つその他の Go リソースについては、以下をご覧ください。
- インスタンス グループのデプロイメントの管理とモニタリングについては、Compute Engine > インスタンス グループ。
- URL マップやバックエンド サービスなどの負荷分散構成の管理については、ネットワーク サービス > 負荷分散。
- Google Kubernetes Engine にアプリをデプロイする
- その他の Google Cloud サービスを検索します。