700 以上のラボとコースにアクセス

コンテナ化アプリケーションを Cloud Run にデプロイする

ラボ 1時間 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

概要

Cloud Run は、フルマネージドのコンピューティング プラットフォームで、HTTP リクエストで呼び出せるステートレスなコンテナを実行できます。コンテナ イメージをビルドできるものであれば、任意のプログラミング言語で記述されたコードを Cloud Run にデプロイできます。Go、Node.js、Python、Java、.NET Core、Ruby でアプリケーションを開発する際に、コンテナを自動的にビルドするソースベースのデプロイ方法を使用できます。

Cloud Run はサーバーレスで、Google のスケーラブルなインフラストラクチャ上でコンテナを実行します。Knative をベースに構築されており、Cloud Run を使用してフルマネージドでコンテナを実行するか、Cloud Run with GKE を使用して Google Kubernetes Engine クラスタ内でコンテナを実行するかを選択できます。

Cloud Run は Google Cloud 上の他のサービスと連携するため、Cloud Run サービスの運用、構成、スケーリングに時間をかけすぎることなく、さまざまな機能を備えたアプリケーションを構築できます。

目標

このラボの内容:

  • Cloud Build を使用して、アプリケーションの Docker コンテナ イメージを作成する。
  • コンテナ イメージを Cloud Run にデプロイする。
  • コンテナ化アプリケーションを実行してテストする。

プロセスのビルドとデプロイ

設定

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

  1. Qwiklabs にシークレット ウィンドウでログインします。

  2. ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
    一時停止機能はありません。必要な場合はやり直せますが、最初からになります。

  3. 準備ができたら、[ラボを開始] をクリックします。

  4. ラボの認証情報(ユーザー名パスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。

  5. [Google Console を開く] をクリックします。

  6. [別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
    他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。

  7. 利用規約に同意し、再設定用のリソースページをスキップします。

Google Cloud Shell の有効化

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

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

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

    ハイライト表示された Cloud Shell アイコン

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

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

Cloud Shell ターミナルでハイライト表示されたプロジェクト 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 の概要ガイド をご覧ください。

タスク 1. プロジェクトと環境を構成する

このタスクでは、Cloud Shell 環境の環境変数を設定し、このラボで使用する関連 Google API を有効にします。

  1. ラボの認証情報を使用して Google Cloud コンソールにログインし、Cloud Shell ターミナル ウィンドウを開きます。

  2. Cloud Shell で次のコマンドを実行して、プロジェクト ID とリージョンの環境変数を設定します。

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|Region}}}
  3. 次のコマンドを実行して、関連 API を有効にします。

    gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 関連 API を有効にする

タスク 2. アプリケーションをローカルでテストする

このタスクでは、サンプルの Node.js アプリケーションをコピーします。その後、Cloud Shell 環境でローカルにビルドして実行します。

アプリケーションをコピーする

  1. app ディレクトリを作成し、現在の作業ディレクトリにします。

    mkdir app && cd app
  2. 次のコマンドを実行して、Cloud Storage からアプリをコピーしてファイルを抽出します。

    gsutil cp gs://cloud-training/CBL515/sample-apps/sample-node-app.zip . && unzip sample-node-app

アプリケーションの依存関係をインストールする

  1. アプリのディレクトリに移動します。

    cd sample-node-app
  2. 最上位ディレクトリにある server.js ファイルの内容を表示すると、アプリケーションのソースコードを確認できます。

    cat server.js これがアプリケーションのメインのエントリ ポイントです。このサンプル アプリケーションは、HTTP 経由でアプリケーションにリクエストが送信されると商品データを返す API を提供する基本的な小売向けサービスです。
  3. 次のコマンドを実行して、アプリケーションの依存関係モジュールをローカルにインストールします。

    npm install

アプリケーションをテストする

  1. 次のコマンドを実行して、アプリケーションをローカルで実行します。

    npm start

    次の出力が表示されます。

    > sample-node-app@1.0.0 start > node server.js Sample-node-app listening on port 8080!
  2. Cloud Shell ナビゲーション バーで(追加)をクリックし、2 つ目の Cloud Shell ターミナル ウィンドウを開きます。

  3. アプリケーションに HTTP リクエストをいくつか送信して、サンプル API をテストします。

    curl http://localhost:8080/service/products | jq コマンドライン ツール jq を使用して、アプリケーションからの JSON レスポンスを解析してフォーマットします。

    アプリケーションは、次のような商品リストを返します。

    [ { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }, { "id": "L9ECAV7KIM", "name": "Terrarium", "description": "This terrarium will look great in your white painted living room.", "picture": "static/img/products/terrarium.jpg", "cost": 36.45, "categories": [ "gardening" ] }, { "id": "2ZYFJ3GM2N", "name": "Film Camera", "description": "This camera looks like it's a film camera, but it's actually digital.", "picture": "static/img/products/film-camera.jpg", "cost": 2245, "categories": [ "photography", "vintage" ] }, { "id": "LS4PSXUNUM", "name": "Metal Camping Mug", "description": "You probably don't go camping that often but this is better than plastic cups.", "picture": "static/img/products/camp-mug.jpg", "cost": 24.33, "categories": [ "cookware" ] }, { "id": "9SIQT8TOJO", "name": "City Bike", "description": "This single-gear bike probably cannot climb the hills of San Francisco.", "picture": "static/img/products/city-bike.jpg", "cost": 789.5, "categories": [ "cycling" ] }, { "id": "6E92ZMYYFZ", "name": "Air Plant", "description": "Have you ever wondered whether air plants need water? Buy one and figure out.", "picture": "static/img/products/air-plant.jpg", "cost": 12.3, "categories": [ "gardening" ] } ]
  4. 2 回目の API リクエストを送信し、ID を指定して特定商品を取得します。

    curl http://localhost:8080/service/products/1YMWWN1N4O | jq

    アプリケーションは、特定のプロダクトに関する詳細を返します。

    { "id": "1YMWWN1N4O", "name": "Home Barista Kit", "description": "Always wanted to brew coffee with Chemex and Aeropress at home?", "picture": "static/img/products/barista-kit.jpg", "cost": 124, "categories": [ "cookware" ] }
  5. 最初の Cloud Shell ターミナル ウィンドウで Ctrl+C キーを押し、アプリケーションを終了します。

タスク 3. Cloud Build を使用してアプリケーションをコンテナ化する

Cloud Build は、Google Cloud でビルドを実行するサービスです。Cloud Build では、継続的インテグレーションと継続的デリバリー(CI/CD)パイプラインを使用して、アプリケーションを継続的にビルド、テスト、デプロイできます。

Cloud Build に指示を与えるには、一連のタスクを含むビルド構成ファイルを作成します。この指示により、依存関係のフェッチ、単体テストと統合テストの実行、静的分析の実行、docker、gradle、maven などのビルドツールを使用したアーティファクトの作成を行うようにビルドを構成できます。

このタスクでは、Cloud Build を使用してアプリケーションの Docker コンテナをビルドし、そのコンテナ イメージを Artifact Registry のリポジトリに push します。

リポジトリを作成する

  1. Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Artifact Registry」と入力して [検索] をクリックし、検索結果で [Artifact Registry] をクリックします。

  2. [Artifact Registry] の横にあるPin ピン)をクリックします。

  3. [リポジトリを作成] をクリックします。

  4. [リポジトリの作成] ページで、次の情報を入力します。残りの設定はデフォルト値のままにします。

    名前

    my-repo

    形式

    Docker

    ロケーション タイプ

    リージョン

    リージョン

  5. [作成] をクリックし、ネットワークが作成されるまで待ちます。

Docker でリポジトリを使用できるよう認証する

イメージをリポジトリに push する前に、Artifact Registry のリポジトリに対するリクエストを認証するように Docker を構成する必要があります。

  1. リージョン で Docker リポジトリの認証を設定するには、Cloud Shell で次のコマンドを実行します。

    gcloud auth configure-docker ${REGION}-docker.pkg.dev
  2. プロンプトが表示されたら、「Y」と入力します。

ビルド構成ファイルを作成する

Cloud Build に指示を与えるには、一連のタスクを含むビルド構成ファイルを作成します。この指示により、依存関係のフェッチ、単体テストと統合テストの実行、静的分析の実行、docker、gradle、maven などのビルダーを使用したアーティファクトの作成を行うようにビルドを構成できます。

  1. リポジトリ名の環境変数を設定します。

    REPO=${REGION}-docker.pkg.dev/${PROJECT_ID}/my-repo
  2. ビルド構成ファイルを作成します。

    cat > cloudbuild.yaml <<EOF steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${REPO}/sample-node-app-image', '.' ] images: - '${REPO}/sample-node-app-image' EOF
  3. cloudbuild.yaml ファイルを表示します。

    cat cloudbuild.yaml ビルドステップでは、現在のディレクトリにあるソースコードと Dockerfile から docker ビルダーを使用してコンテナ イメージをビルドします。ビルドしたイメージは、Artifact Registry のリポジトリに push されます。

コンテナをビルドする

  1. 次のコマンドを実行して、Cloud Build でコンテナをビルドします。

    gcloud builds submit --region=$REGION --config=cloudbuild.yaml

    コマンド出力の一部を次に示します。

    ... ... b3389e626b47: Pushed 38610c0cfc18: Pushed latest: digest: sha256:b6007afa5e8fb05d8ac617ddf5fee8d58cc6ba8901038c97f8e360520c5fdbf4 size: 3051 DONE ---------------------------------------------------------------------------------------------------------------------------------------- ID: f803a828-dc50-41cb-bc94-71dfb8c83648 CREATE_TIME: 2023-02-28T18:28:41+00:00 DURATION: 1M23S SOURCE: gs://qwiklabs-gcp-02-26de4317fac8_cloudbuild/source/1677608919.352478-c157fa4ae8544b3dbba23b5f29145286.tgz IMAGES: asia-east1-docker.pkg.dev/qwiklabs-gcp-02-26de4317fac8/my-repo/sample-node-app-image (+1 more) STATUS: SUCCESS

    Cloud Build はまず、指定されたディレクトリにあるアプリケーションのソースコードとその他のファイルを Cloud Storage にアップロードします。次に、ビルド構成と Dockerfile で指定された手順からアプリケーションを含むコンテナ イメージをビルドし、指定されたイメージ名でイメージにタグを付け、イメージを Artifact Registry のリポジトリに push します。

ビルド履歴を表示する

  1. Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Cloud Scheduler」と入力して [検索] をクリックし、検索結果で [Cloud Scheduler] をクリックします。

  2. [リージョン] で [] を選択します。

  3. リスト上部にあるビルド ID をクリックします。

    ビルドログを含むビルドの詳細が表示されます。

Artifact Registry にあるコンテナ イメージを表示する

  1. ビルドコマンドが完了したら、Google Cloud コンソールのナビゲーション メニュー(ナビゲーション メニュー)で、[Artifact Registry] > [リポジトリ] をクリックします。

  2. my-repo リポジトリをクリックして、sample-node-app-image コンテナ イメージを表示します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Build でコンテナ イメージをビルドする

タスク 4. コンテナを Cloud Run にデプロイする

ビルドしたコンテナ イメージを Cloud Run にデプロイします。Cloud Run にデプロイするには、次の 2 つの方法があります。

  • マネージド Cloud Run: フルマネージド サービスモデル。コンテナのライフサイクル全体が Cloud Run によって管理されます。このラボでは、この方法を使用します。

  • Cloud Run on Anthos: 制御が強化された Cloud Run。GKE で作成した独自のクラスタと Pod を導入できます。

このタスクでは、コンテナ イメージを Google Cloud のフルマネージド Cloud Run サービスにデプロイします。

  1. コンテナ イメージをデプロイするには、Cloud Shell で次のコマンドを実行します。

    gcloud run deploy sample-node-app --image ${REPO}/sample-node-app-image --region $REGION --allow-unauthenticated allow-unauthenticated オプションを使用すると、認証なしでサービスにアクセスできます。
  2. コマンドが完了したら、Google Cloud コンソールのナビゲーション メニュー(ナビゲーション メニュー)にある [Cloud Run] をクリックします。

  3. Cloud Run サービスの詳細を表示するには、sample-node-app サービス名をクリックします。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 コンテナ イメージを Cloud Run にデプロイする。

タスク 5. Cloud Run でアプリケーションをテストする

  1. Cloud Shell で次のコマンドを実行して、サービスが実行されており、リクエストを受け付けられることを確認します。

    gcloud run services list

    コマンドの出力は次のようになります。

    ✔ SERVICE: sample-node-app REGION: asia-east1 URL: https://sample-node-app-dduno3adrq-uc.a.run.app LAST DEPLOYED BY: student-04-329a97f025fd@qwiklabs.net LAST DEPLOYED AT: 2023-02-28T22:21:04.803928Z
  2. コマンド出力から URL の値をコピーし、curl コマンドに貼り付けます。その際、URL の末尾に service/products を追加します。出力を jq コマンドにパイプして、Enter キーを押します。

    curl https://sample-node-app-dduno3adrq-uc.a.run.app/service/products | jq

    出力は、前のタスクでアプリケーションをローカルで実行したときに受け取ったものと似ているはずです。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Cloud Run にデプロイされたアプリケーションをテストする。

お疲れさまでした

このラボでは:

  • Cloud Build を使用してアプリケーションの Docker コンテナ イメージを作成し、そのコンテナ イメージを Cloud Run にデプロイしました。
  • また、アプリケーションをローカルと Cloud Run でテストして、想定どおりに動作することを確認しました。

次のステップと詳細情報

詳細については、以下のドキュメントをご覧ください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

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

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

ありがとうございます。

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

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。