Hello Cloud Run
概要
Cloud Run は、マネージド型のコンピューティング プラットフォームで、HTTP リクエスト経由で呼び出し可能なステートレス コンテナを実行できます。Cloud Run はサーバーレスです。インフラストラクチャ管理が一切不要なため、最も重要な作業であるアプリケーションの構築に集中できます。
Cloud Run は Knative で構築されており、フルマネージド型の Cloud Run でコンテナを実行するか、Cloud Run on GKE の Google Kubernetes Engine クラスタでコンテナを実行するかを選択できます。
このラボの目標は、シンプルなコンテナ化アプリケーション イメージをビルドし、Cloud Run にデプロイすることです。
目標
このラボでは、次のタスクの実行方法を学びます。
- Cloud Run API を有効にする。
- サーバーレス、ステートレス コンテナとしてデプロイできるシンプルな Node.js アプリケーションを作成する。
- アプリケーションをコンテナ化し、Artifact Registry にアップロードする。
- コンテナ化したアプリケーションを Cloud Run にデプロイする。
- 不要なイメージを削除し、追加のストレージ料金が発生しないようにする。
設定と要件
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
-
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
出力:
出力例:
- 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
リファレンス
基本的な Linux コマンド
以下に、このラボの手順またはコードブロックに含まれている可能性のある、ごく基本的な Linux コマンドの参照リストを示します。
コマンド --> | アクション | . | コマンド --> | アクション |
---|---|---|---|---|
mkdir(make directory) | 新しいフォルダを作成します | . | cd(change directory) | 場所を別のフォルダに変更します |
ls(list) | ディレクトリ内のファイルとフォルダを一覧表示します | . | cat(concatenate) | エディタを使用せずにファイルの内容を出力します |
apt-get update | パッケージ マネージャー ライブラリを更新します | . | ping | ホストのネットワーク到達性をテストするためのシグナルを送信します |
mv(move) | ファイルを移動します | . | cp(copy) | ファイルのコピーを作成します |
pwd(present working directory) | 現在の場所を再表示します | . | sudo(super user do) | 高度な管理者権限を与えます |
タスク 1. Cloud Run API を有効にして、シェル環境を構成する
- Cloud Shell で、Cloud Run API を有効にします。
- 認証情報を使用する許可を求められた場合は、許可してください。成功すると次のようなメッセージが表示されます。
- コンピューティング リージョンを設定します。
- LOCATION 環境変数を作成します。
タスク 2. サンプル アプリケーションを作成する
このタスクでは、HTTP リクエストに応答する Express ベースのシンプルな Node.js アプリケーションをビルドします。
- Cloud Shell で、
helloworld
という名前の新しいディレクトリを作成し、そのディレクトリにビューを移動します。
-
次に、いくつかのファイルを作成して編集します。ファイルの編集には、
nano
を使用します。または、Cloud Shell で [エディタを開く] ボタンをクリックして、コードエディタを使用します。 -
package.json
ファイルを作成し、次の内容を追加します。
上のファイルで最も重要な点は、スクリプトを開始するコマンドと、Express ウェブ アプリケーション フレームワークへの依存関係が含まれていることです。
-
CTRL+X、Y、Enter キーの順に押し、
package.json
ファイルを保存します。 -
次に、同じディレクトリに
index.js
ファイルを作成し、次の内容をコピーします。
このコードは、PORT
環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。これでアプリは完成しました。このアプリをコンテナ化し、Artifact Registry にアップロードします。
-
CTRL+X、Y、Enter キーの順に押し、
index.js
ファイルを保存します。
タスク 3. アプリをコンテナ化して Artifact Registry にアップロードする
- サンプルアプリをコンテナ化するには、ソースファイルと同じディレクトリに
Dockerfile
という名前の新しいファイルを作成し、次の内容を追加します。
-
CTRL+X、Y、Enter キーの順に押し、
Dockerfile
ファイルを保存します。 -
次に、
Dockerfile
を含むディレクトリから次のコマンドを実行し、Cloud Build を使用してコンテナ イメージをビルドします(注: このコマンドの $GOOGLE_CLOUD_PROJECT 環境変数には、ラボのプロジェクト ID が含まれています)。
Cloud Build は、Google Cloud でビルドを実行するサービスです。一連のビルドステップを実行します。各ビルドステップが Docker コンテナで実行されてアプリケーション コンテナ(またはその他のアーティファクト)が生成され、Artifact Registry に push されます。そのすべてを 1 つのコマンドで実行できます。
Cloud Registry への push が完了すると、イメージ名(gcr.io/[PROJECT-ID]/helloworld
)を含む SUCCESS メッセージが表示されて、イメージが Artifact Registry に保存されます。このイメージは必要に応じて再利用できます。
- 現在のプロジェクトに関連付けられているすべてのコンテナ イメージを一覧表示するには、次のコマンドを使用します。
-
gcloud
を、Google がサポートするすべての Docker レジストリの認証ヘルパーとして登録します。
- Cloud Shell からローカルでアプリケーションを実行してテストするには、次のように、標準の
docker
コマンドを使用してアプリケーションを開始します。
- Cloud Shell ウィンドウで、ウェブでプレビューアイコンをクリックし、[ポート 8080 でプレビュー] を選択します。
ブラウザ ウィンドウが開いて「Hello World!」というメッセージが表示されるはずです。または、curl localhost:8080
を使用することもできます。
タスク 4. Cloud Run にデプロイする
- コンテナ化されたアプリケーションを Cloud Run にデプロイするには次のコマンドを使用します。実際のプロジェクト ID を追加してください。
上記のコマンドの allow-unauthenticated フラグを使用すると、サービスが公開されアクセス可能になります。
- プロンプトが表示されたら、Enter キーを押して
service name
を確認します。
デプロイが完了するまで少しお待ちください。
成功すると、コマンドラインにサービス URL が表示されます。
ブラウザ ウィンドウでこのサービス URL を開くと、デプロイしたコンテナにアクセスできます。
これで完了です。コンテナ イメージにパッケージ化されたアプリケーションが Cloud Run にデプロイされました。Cloud Run は、受信したリクエストを処理するためにコンテナ イメージを自動的に水平方向にスケーリングします。リクエスト数が減少すると、スケールダウンします。実際の環境で使用した場合、料金は、リクエストの処理中に使用した CPU、メモリ、ネットワークに対してのみ発生します。
このラボでは gcloud
コマンドラインを使用しましたが、Cloud Run は Cloud コンソールでも使用できます。
-
ナビゲーション メニューの [サーバーレス] セクションで [Cloud Run] をクリックすると、サービスのリストに
helloworld
サービスが表示されるはずです。
タスク 5. クリーンアップ
サービスが使用されていない場合、Cloud Run の料金は発生しませんが、ビルドしたコンテナ イメージが保存されていると課金される場合があります。
- 課金されないようにするには、Google Cloud プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止するか、次のコマンドを使用して
helloworld
イメージを削除します。
-
続行するかどうかを確認するプロンプトが表示されたら、「
Y
」と入力して Enter キーを押します。 -
この Cloud Run サービスを削除するには次のコマンドを使用します。
- 続行するかどうかを確認するプロンプトが表示されたら、「
Y
」と入力して Enter キーを押します。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
お疲れさまでした
このラボはこれで完了です。
次のステップと詳細情報
Cloud Run に適したステートレス HTTP コンテナをコードソースからビルドして Artifact Registry に push する方法の詳細については、次のページをご覧ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。