arrow_back

Google Cloud へのアプリのデプロイ

ログイン 参加
700 以上のラボとコースにアクセス

Google Cloud へのアプリのデプロイ

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

概要

このラボでは、Google Cloud サービスの App Engine、Kubernetes Engine、Cloud Run にアプリケーションをデプロイします。

Google Cloud サービスである App Engine、Kubernetes Engine、Cloud Run のアーキテクチャ

目標

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

  • GitHub からサンプルアプリをダウンロードする
  • App Engine にデプロイする
  • Kubernetes Engine にデプロイする
  • Cloud Run にデプロイする

ラボ環境を設定する

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

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

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

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

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

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

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

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

タスク 1. 簡単な Python アプリケーションを作成する

管理するソースコードが必要なので、簡単な Python Flask ウェブ アプリケーションを作成します。これは「hello world」のような簡単なアプリケーションですが、これから構築するパイプラインをテストするにはこれで十分です。

  1. Google Cloud コンソールで、Cloud Shell をアクティブにするアイコン(Cloud Shell をアクティブにするアイコン)をクリックします。
  2. プロンプトが表示されたら、[続行] をクリックします。

3.9. Cloud Shell で次のコマンドを入力して gcp-course という名前のフォルダを作成します。

mkdir gcp-course
  1. 作成したフォルダに移動します。
cd gcp-course
  1. deploying-apps-to-gcp という名前のフォルダを作成します。
mkdir deploying-apps-to-gcp
  1. 作成したフォルダに移動します。
cd deploying-apps-to-gcp
  1. Cloud Shell で [エディタを開く](エディタのアイコン)をクリックして、コードエディタを開きます。プロンプトが表示されたら、[新しいウィンドウで開く] をクリックします。
  2. 左側のエクスプローラ ツリーで、gcp-course > deploying-apps-to-gcp フォルダを選択します。
  3. [deploying-apps-to-gcp] をクリックします。
  4. [新しいファイル] をクリックします。
  5. ファイルに「main.py」という名前を付け、Enter キーを押します。
  6. 作成したファイル内に次のコードを貼り付けます。
from flask import Flask, render_template, request app = Flask(__name__) @app.route("/") def main(): model = {"title": "Hello GCP."} return render_template('index.html', model=model) if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)
  1. 変更を保存します。Ctrl+S キーを押します。
  2. [deploying-apps-to-gcp] フォルダをクリックします。
  3. [新しいフォルダ] をクリックします。
  4. フォルダに「templates」という名前を付け、Enter キーを押します。
  5. templates フォルダを右クリックして、layout.html という名前の新しいファイルを作成します。
  6. このファイル内に次のコードを追加して、先ほどと同じようにファイルを保存します。
<!doctype html> <html lang="en"> <head> <title>{{model.title}}</title> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> </head> <body> <div class="container"> {% block content %}{% endblock %} <footer></footer> </div> </body> </html>
  1. 同じく templates フォルダ内に、index.html という名前の新しいファイルを追加します。

  2. このファイル内に次のコードを追加して、先ほどと同じようにファイルを保存します。

{% extends "layout.html" %} {% block content %} <div class="jumbotron"> <div class="container"> <h1>{{model.title}}</h1> </div> </div> {% endblock %}
  1. Python では、pip を使用してアプリケーションの前提条件を管理します。次は、このアプリケーションの要件のリストが記載されたファイルを追加します。

  2. (templates フォルダではなくdeploying-apps-to-gcp フォルダ内に新しいファイルを作成し、そのファイルに以下の内容を追加して、requirements.txt という名前で保存します。

Flask==2.0.3 itsdangerous==2.0.1 Jinja2==3.0.3 werkzeug==2.2.2

タスク 2. Docker ビルドを定義する

Docker を使用するために、まず、Dockerfile というファイルを作成します。このファイルで、Docker コンテナをどのように構成するかを定義します。その作業を今から行います。

  1. deploying-apps-to-gcp フォルダで [新しいファイル] をクリックし、Dockerfile という名前の新しいファイルを作成します。

この Dockerfile ファイルを使用して、コンテナのビルド方法を定義します。

  1. 次のものを追加します。
FROM python:3.9 WORKDIR /app COPY . . RUN pip install gunicorn RUN pip install -r requirements.txt ENV PORT=8080 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app
  1. プログラムをテストするために、次のコマンドを入力して Docker イメージのコンテナをビルドします。
docker build -t test-python .
  1. 次のコマンドを入力して、Docker イメージを実行します。
docker run --rm -p 8080:8080 test-python
  1. プログラムが実行されていることを確認するために、Google Cloud Shell のツールバーでウェブでプレビュー アイコン(ウェブ プレビュー アイコン)をクリックします。次に、[ポート 8080 でプレビュー] をクリックします。

ブラウザの新しいタブにプログラムが表示されます。

  1. Cloud Shell で Ctrl+C キーを押して、プログラムを停止します。

タスク 3. App Engine にデプロイする

App Engine は完全に自動化されたデプロイ プラットフォームです。Python、Java、JavaScript、Go などの多数の言語に対応しています。App Engine を使用するには、構成ファイルを作成して、いくつかの簡単なコマンドでアプリケーションをデプロイします。このタスクでは、app.yaml という名前のファイルを作成して App Engine にデプロイします。

  1. Cloud Shell で [エディタを開く](Cloud Shell エディタ アイコン)をクリックしてから、必要に応じて「新しいウィンドウで開く」をクリックします。
  2. 左側のエクスプローラ ツリーで、gcp-course/deploying-apps-to-gcp フォルダを選択します。
  3. [新しいファイル] をクリックし、ファイルに「app.yaml」という名前を付け、Enter キーを押します。
  4. 作成したファイル内に次のコードを貼り付けます。
runtime: python39
  1. 変更を保存します。
注: app.yaml ファイルには他にも設定を追加できますが、ここで必要な設定は言語ランタイムのみです。
  1. プロジェクト内に App Engine アプリケーションを作成する必要があります。この作業は、gcloud app create コマンドを使用して 1 回だけ行います。コマンドにはアプリを作成するリージョンを指定します。[ターミナルを開く] をクリックし、次のコマンドを入力します。プロンプトが表示されたら、[承認] をクリックします。
gcloud app create --region={{{project_0.startup_script.app_region| Region}}}
  1. 次のコマンドを使用してアプリをデプロイします。
gcloud app deploy --version=one --quiet : このコマンドの完了には数分かかります。
  1. Google Cloud コンソールのタイトルバーにある検索フィールドに「App Engine」と入力し、[検索結果] セクションの [App Engine] をクリックします。

  2. ダッシュボードの右上に、次のようなアプリケーションへのリンクがあります。

アプリケーションへのリンクの例

注: デフォルトでは、App Engine アプリケーションへの URL は https://project-id.appspot.com の形式になっています。
  1. リンクをクリックしてプログラムをテストします。

  2. プログラムに変更を加えて、App Engine で簡単にバージョン管理できることを確認します。

  3. コードエディタの左側にあるナビゲーション パネルで、/deploying-apps-to-gcp フォルダを開きます。main.py をクリックして開きます。

  4. main() 関数内で、次のようにタイトルを「Hello App Engine」に変更します。

@app.route("/") def main(): model = {"title" "Hello App Engine"} return render_template('index.html', model=model)
  1. コードエディタのツールバーで [File] > [Save] をクリックして変更を保存します。

  2. 次のコマンドを使用して、バージョン 2 をデプロイします。

gcloud app deploy --version=two --no-promote --quiet 注: --no-promote パラメータは App Engine に対し、引き続き以前のバージョンでリクエストを処理するよう指示します。これにより、新しいバージョンを本番環境で使用する前にテストできます。
  1. コマンドが完了したら、App Engine ダッシュボードに戻ります。再びリンクをクリックすると、引き続きバージョン 1 が表示されます。Hello GCP と表示されます。これは、直前のコマンドで --no-promote パラメータを指定したためです。

  2. 左側の [バージョン] タブをクリックします。2 つのバージョンが一覧表示されます。

注: [更新] をクリックしないとバージョン 2 が表示されない場合があります。
  1. バージョン 2 のリンクをクリックしてテストします。今度は Hello App Engine と表示されます。

  2. 本番環境のトラフィックをバージョン 2 に移行するには、上部にある [トラフィックを分割] をクリックします。バージョンを 2 に変更して、[保存] をクリックします。

  3. 完了するまで少し待ちます。先ほど Hello GCP と表示されたブラウザのタブを更新すると、新しいバージョンが返されます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 App Engine にデプロイする

タスク 4. Cloud Build と Artifact Registry を使用して Kubernetes Engine にデプロイする

Kubernetes Engine を使用すると、マシンのクラスタを作成して、そこに任意の数のアプリケーションをデプロイできます。Kubernetes ではマシン管理の詳細が抽象化されるため、簡単な CLI コマンドを使用してアプリケーションのデプロイを自動化できます。

アプリケーションを Kubernetes にデプロイするには、最初にクラスタを作成する必要があります。次に、クラスタにデプロイするアプリケーションごとに構成ファイルを追加します。

  1. ナビゲーション メニューナビゲーション メニュー アイコン)で [Kubernetes Engine] をクリックします。Kubernetes API を初期化中というメッセージが表示されたら、初期化が完了するまで待ちます。

  2. [クラスタを作成] をクリックし、[Standard クラスタに切り替え] をクリックして Standard クラスタへの切り替えを確定します。

  3. [ロケーション タイプ] で [ゾーン] をクリックし、ゾーン を選択します。他のすべての変数をデフォルトのままにして、[作成] をクリックします。Kubernetes Engine クラスタが作成されるまでに数分かかります。クラスタの準備ができると、緑色のチェックマークが表示されます。

  4. クラスタの右にある操作アイコン(3 つの点)、[接続] の順にクリックします。

  5. [クラスタに接続する] ウィンドウで [Cloud Shell で実行] をクリックします。これにより、connect コマンドが自動入力された状態の Cloud Shell が開きます。

  6. Enter キーを押してクラスタに接続します。

  7. 次のコマンドを入力して接続をテストします。

kubectl get nodes

このコマンドによりクラスタ内のマシンが表示されます。表示された場合、接続されています。

  1. Cloud Shell で [エディタを開く](Cloud Shell エディタ アイコン)をクリックします。
  2. 左側のナビゲーション パネルで、gcp-course/deploying-apps-to-gcp フォルダを開きます。main.py をクリックして開きます。
  3. main() 関数内で、次のようにタイトルを「Hello Kubernetes Engine」に変更します。
@app.route("/") def main(): model = {"title" "Hello Kubernetes Engine"} return render_template('index.html', model=model)
  1. 変更を保存します。
  2. kubernetes-config.yaml という名前のファイルを gcp-course/deploying-apps-to-gcp フォルダ内に追加します。
  3. アプリケーションを構成するために、このファイルに次のコードを貼り付けます。
--- apiVersion: apps/v1 kind: Deployment metadata: name: devops-deployment labels: app: devops tier: frontend spec: replicas: 3 selector: matchLabels: app: devops tier: frontend template: metadata: labels: app: devops tier: frontend spec: containers: - name: devops-demo image: <YOUR IMAGE PATH HERE> ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: devops-deployment-lb labels: app: devops tier: frontend-lb spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: devops tier: frontend

注: 上記の YAML ファイルの最初のセクションで、Deployment を構成しています。ここでは、Python ウェブアプリの 3 つのインスタンスをデプロイします。image 属性に注目してください。この値は、これからビルドするイメージで更新します。2 つ目のセクションでは Service を構成しており、type に LoadBalancer(ロードバランサ)を設定しています。このロードバランサにはパブリック IP アドレスを割り当てます。これにより、ユーザーがロードバランサを介してアプリケーションにアクセスするようにします。

Kubernetes の Deployment と Service の詳細については、以下のリンクからご確認ください。

  1. Cloud Shell で次のコマンドを入力して、devops-demo という名前の Artifact Registry リポジトリを作成します。
gcloud artifacts repositories create devops-demo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}}
  1. Artifact Registry Docker リポジトリに対する認証を行うように Docker を構成するには、次のコマンドを入力します。
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. Kubernetes Engine を使用するには、Docker イメージをビルドする必要があります。次のコマンドを入力し、Cloud Build でイメージを作成して Artifact Registry に保管します。
cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/devops-image:v0.2 .
  1. 上記のコマンドが完了すると、イメージ名が出力に表示されます。イメージ名の形式は -docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2 です。

  2. イメージ名をハイライト表示し、クリップボードにコピーします。コピーした名前を kubernetes-config.yaml ファイル内に貼り付けて、文字列 <YOUR IMAGE PATH HERE> を上書きします。

次のような内容になります。

spec: containers: - name: devops-demo image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2 ports:
  1. 次の Kubernetes コマンドを入力してアプリケーションをデプロイします。
kubectl apply -f kubernetes-config.yaml
  1. 構成ファイルでは、アプリケーションの 3 つのレプリカが指定されています。次のコマンドを入力して、3 つのインスタンスが作成されているかどうかを確認します。
kubectl get pods

すべての Pod の準備ができていることを確認します。準備ができていない場合は、数秒待ってから再試行します。

  1. 構成ファイルにはロードバランサも追加されています。次のコマンドを入力して、作成されているかどうかを確認します。
kubectl get services

次のような内容になります。

出力

ロードバランサの外部 IP アドレスが「pending」となっている場合は、数秒待ってから再試行します。

  1. 外部 IP アドレスを取得したら、ブラウザのタブを開いてそのアドレスにリクエストを送信します。Hello Kubernetes Engine と表示されます。準備が完了するまでに数秒かかる場合があります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Kubernetes Engine にデプロイする

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

Cloud Run を使用すると、Kubernetes へのデプロイを簡素化して自動化できます。Cloud Run では構成ファイルは必要なく、アプリケーションに使用するクラスタを選択するだけです。Cloud Run では、Google が管理するクラスタを使用することも、独自の Kubernetes クラスタを使用することもできます。

Cloud Run を使用するには、Docker イメージを使用してアプリケーションをデプロイする必要があります。また、アプリケーションはステートレスである必要もあります。

  1. Cloud Shell コードエディタを開き、左側のナビゲーション パネルで gcp-course/deploying-apps-to-gcp フォルダを開きます。main.py をクリックして開きます。
  2. main() 関数内で、次のようにタイトルを「Hello Cloud Run」に変更します。
@app.route("/") def main(): model = {"title" "Hello Cloud Run"} return render_template('index.html', model=model)
  1. 変更を保存します。

  2. Cloud Run を使用するには、Docker イメージをビルドする必要があります。Cloud Shell で次のコマンドを入力し、Cloud Build でイメージを作成して Artifact Registry に保管します。

cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/cloud-run-image:v0.1 .
  1. ビルドが完了したら、Google Cloud コンソールのタイトルバーにある検索フィールドに「Cloud Run」と入力し、[プロダクトとページ] セクションの [Cloud Run] をクリックします。

  2. [サービスを作成] をクリックします。 これで Cloud Run API が有効になります。

  3. [コンテナ イメージの URL] テキスト ボックスで [選択] リンクをクリックし、[Artifact Registry] をクリックします。表示されるダイアログで Region-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo > cloud-run-image を開き、リストに表示されたイメージを選択します。[選択] をクリックします。

  4. [サービス名] に「hello-cloud-run」と入力し、リージョン を選択します。

  5. [認証] では、[未認証の呼び出しを許可] を選択します。

  6. [コンテナ、ボリューム、ネットワーキング、セキュリティ] で、[実行環境] セクションの [デフォルト] を選択します。

  7. [リビジョン スケーリング] の [インスタンスの最大数] を 6 に設定します。他の項目はデフォルト値のままにしておきます。

  8. 最後に [作成] をクリックします。

  9. このサービスのデプロイにそれほど時間はかかりません。緑色のチェックマークが表示されたら、アプリケーション用に自動的に生成された URL をクリックします。Hello Cloud Run と表示されます。

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

お疲れさまでした

このラボでは、Google Cloud サービスの App Engine、Kubernetes Engine、Cloud Run にアプリケーションをデプロイしました。

ラボを終了する

ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。

Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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