arrow_back

Hello Cloud Run

ログイン 参加
知識をテストして、コミュニティで共有しましょう

Hello Cloud Run

ラボ 1時間 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
知識をテストして、コミュニティで共有しましょう

概要

Cloud Run は、マネージド型のコンピューティング プラットフォームで、HTTP リクエスト経由で呼び出し可能なステートレス コンテナを実行できます。Cloud Run はサーバーレスです。インフラストラクチャ管理が一切不要なため、最も重要な作業であるアプリケーションの構築に集中できます。

Cloud RunKnative で構築されており、フルマネージド型の Cloud Run でコンテナを実行するか、Cloud Run on GKE の Google Kubernetes Engine クラスタでコンテナを実行するかを選択できます。

このラボの目標は、シンプルなコンテナ化アプリケーション イメージをビルドし、Cloud Run にデプロイすることです。

目標

このラボでは、次のタスクの実行方法を学びます。

  • Cloud Run API を有効にする。
  • サーバーレス、ステートレス コンテナとしてデプロイできるシンプルな Node.js アプリケーションを作成する。
  • アプリケーションをコンテナ化し、Artifact Registry にアップロードする。
  • コンテナ化したアプリケーションを Cloud Run にデプロイする。
  • 不要なイメージを削除し、追加のストレージ料金が発生しないようにする。

設定と要件

各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。

Google Cloud Shell の有効化

Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。

Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

  2. [続行] をクリックします。

環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  • 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list

出力:

Credentialed accounts: - @.com (active)

出力例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project =

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: gcloud ドキュメントの全文については、 gcloud CLI の概要ガイド をご覧ください。

リファレンス

基本的な Linux コマンド

以下に、このラボの手順またはコードブロックに含まれている可能性のある、ごく基本的な Linux コマンドの参照リストを示します。

コマンド --> アクション . コマンド --> アクション
mkdirmake directory 新しいフォルダを作成します . cdchange directory 場所を別のフォルダに変更します
lslist ディレクトリ内のファイルとフォルダを一覧表示します . catconcatenate エディタを使用せずにファイルの内容を出力します
apt-get update パッケージ マネージャー ライブラリを更新します . ping ホストのネットワーク到達性をテストするためのシグナルを送信します
mvmove ファイルを移動します . cpcopy ファイルのコピーを作成します
pwdpresent working directory 現在の場所を再表示します . sudosuper user do 高度な管理者権限を与えます

タスク 1. Cloud Run API を有効にして、シェル環境を構成する

  1. Cloud Shell で、Cloud Run API を有効にします。
gcloud services enable run.googleapis.com
  1. 認証情報を使用する許可を求められた場合は、許可してください。成功すると次のようなメッセージが表示されます。
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully. 注: コンソールの [API とサービス] セクションでこの API を有効にすることもできます。
  1. コンピューティング リージョンを設定します。
gcloud config set compute/region {{{project_0.default_region | "REGION"}}}
  1. LOCATION 環境変数を作成します。
LOCATION="{{{project_0.default_region | Region}}}"

タスク 2. サンプル アプリケーションを作成する

このタスクでは、HTTP リクエストに応答する Express ベースのシンプルな Node.js アプリケーションをビルドします。

  1. Cloud Shell で、helloworld という名前の新しいディレクトリを作成し、そのディレクトリにビューを移動します。
mkdir helloworld && cd helloworld
  1. 次に、いくつかのファイルを作成して編集します。ファイルの編集には、nano を使用します。または、Cloud Shell で [エディタを開く] ボタンをクリックして、コードエディタを使用します。

  2. package.json ファイルを作成し、次の内容を追加します。

nano package.json { "name": "helloworld", "description": "Simple hello world sample in Node", "version": "1.0.0", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "Google LLC", "license": "Apache-2.0", "dependencies": { "express": "^4.17.1" } }

上のファイルで最も重要な点は、スクリプトを開始するコマンドと、Express ウェブ アプリケーション フレームワークへの依存関係が含まれていることです。

  1. CTRL+XYEnter キーの順に押し、package.json ファイルを保存します。

  2. 次に、同じディレクトリに index.js ファイルを作成し、次の内容をコピーします。

nano index.js const express = require('express'); const app = express(); const port = process.env.PORT || 8080; app.get('/', (req, res) => { const name = process.env.NAME || 'World'; res.send(`Hello ${name}!`); }); app.listen(port, () => { console.log(`helloworld: listening on port ${port}`); });

このコードは、PORT 環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。これでアプリは完成しました。このアプリをコンテナ化し、Artifact Registry にアップロードします。

  1. CTRL+XYEnter キーの順に押し、index.js ファイルを保存します。
注: Cloud Run を使い始める際に使用できる言語は、他にも多数あります。Go、Python、Java、PHP、Ruby、シェル スクリプトなどの手順については、クイックスタート ガイドをご覧ください。

タスク 3. アプリをコンテナ化して Artifact Registry にアップロードする

  1. サンプルアプリをコンテナ化するには、ソースファイルと同じディレクトリに Dockerfile という名前の新しいファイルを作成し、次の内容を追加します。
nano Dockerfile # Node.js 12 の公式の軽量イメージを使用します。 # https://hub.docker.com/_/node FROM node:12-slim # app ディレクトリを作成してそのディレクトリに移動します。 WORKDIR /usr/src/app # アプリケーション依存関係マニフェストをコンテナ イメージにコピーします。 # package.json と package-lock.json の両方(利用可能な場合)がコピーされるようにワイルドカードを使用します。 # これを最初にコピーしておくと、コードを変更するたびに npm install を再実行する必要がなくなります。 COPY package*.json ./ # 本番環境の依存関係をインストールします。 # package-lock.json を追加した場合、「npm ci」に切り替えることでビルドを高速化します。 # RUN npm ci --only=production RUN npm install --only=production # ローカルコードをコンテナ イメージにコピーします。 COPY . ./ # コンテナの起動時にウェブサービスを実行します。 CMD [ "npm", "start" ]
  1. CTRL+XYEnter キーの順に押し、Dockerfile ファイルを保存します。

  2. 次に、Dockerfile を含むディレクトリから次のコマンドを実行し、Cloud Build を使用してコンテナ イメージをビルドします(注: このコマンドの $GOOGLE_CLOUD_PROJECT 環境変数には、ラボのプロジェクト ID が含まれています)。

gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld

Cloud Build は、Google Cloud でビルドを実行するサービスです。一連のビルドステップを実行します。各ビルドステップが Docker コンテナで実行されてアプリケーション コンテナ(またはその他のアーティファクト)が生成され、Artifact Registry に push されます。そのすべてを 1 つのコマンドで実行できます。

Cloud Registry への push が完了すると、イメージ名(gcr.io/[PROJECT-ID]/helloworld)を含む SUCCESS メッセージが表示されて、イメージが Artifact Registry に保存されます。このイメージは必要に応じて再利用できます。

  1. 現在のプロジェクトに関連付けられているすべてのコンテナ イメージを一覧表示するには、次のコマンドを使用します。
gcloud container images list
  1. gcloud を、Google がサポートするすべての Docker レジストリの認証ヘルパーとして登録します。
gcloud auth configure-docker 注: [Do you want to continue?(y/N)?](続行しますか?(y/N)?)というプロンプトが表示されることがあります。同意する場合は、「Y」と入力します。
  1. Cloud Shell からローカルでアプリケーションを実行してテストするには、次のように、標準の docker コマンドを使用してアプリケーションを開始します。
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. Cloud Shell ウィンドウで、ウェブでプレビューアイコンをクリックし、[ポート 8080 でプレビュー] を選択します。

ブラウザ ウィンドウが開いて「Hello World!」というメッセージが表示されるはずです。または、curl localhost:8080 を使用することもできます。

タスク 4. Cloud Run にデプロイする

  1. コンテナ化されたアプリケーションを Cloud Run にデプロイするには次のコマンドを使用します。実際のプロジェクト ID を追加してください。
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION

上記のコマンドの allow-unauthenticated フラグを使用すると、サービスが公開されアクセス可能になります。

  1. プロンプトが表示されたら、Enter キーを押して service name を確認します。
注: [Do you want enable these APIs to continue (this will take a few minutes)?(y/N)?](これらの API を有効にして続行しますか?数分ほどかかります(y/N)?) というプロンプトが表示されることがあります。同意する場合は、「Y」と入力して必要な API を有効にします。

デプロイが完了するまで少しお待ちください。

成功すると、コマンドラインにサービス URL が表示されます。

Service [helloworld] revision [helloworld-00001-xit] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-h6cp412q3a-uc.a.run.app

ブラウザ ウィンドウでこのサービス URL を開くと、デプロイしたコンテナにアクセスできます。

これで完了です。コンテナ イメージにパッケージ化されたアプリケーションが Cloud Run にデプロイされました。Cloud Run は、受信したリクエストを処理するためにコンテナ イメージを自動的に水平方向にスケーリングします。リクエスト数が減少すると、スケールダウンします。実際の環境で使用した場合、料金は、リクエストの処理中に使用した CPU、メモリ、ネットワークに対してのみ発生します。

このラボでは gcloud コマンドラインを使用しましたが、Cloud Run は Cloud コンソールでも使用できます。

  • ナビゲーション メニューの [サーバーレス] セクションで [Cloud Run] をクリックすると、サービスのリストに helloworld サービスが表示されるはずです。

タスク 5. クリーンアップ

サービスが使用されていない場合、Cloud Run の料金は発生しませんが、ビルドしたコンテナ イメージが保存されていると課金される場合があります。

  1. 課金されないようにするには、Google Cloud プロジェクトを削除してプロジェクト内のすべてのリソースへの課金を停止するか、次のコマンドを使用して helloworld イメージを削除します。
gcloud container images delete gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
  1. 続行するかどうかを確認するプロンプトが表示されたら、「Y」と入力して Enter キーを押します。

  2. この Cloud Run サービスを削除するには次のコマンドを使用します。

gcloud run services delete helloworld --region={{{project_0.default_region | "REGION"}}}
  1. 続行するかどうかを確認するプロンプトが表示されたら、「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 の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.