arrow_back

アプリ開発: Kubernetes Engine へのアプリケーションのデプロイ - Python

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

アプリ開発: Kubernetes Engine へのアプリケーションのデプロイ - Python

Lab 50分 universal_currency_alt クレジット: 1 show_chart 入門
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP188

Google Cloud セルフペース ラボ

概要

Google Kubernetes Engine では、Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを行うマネージド環境が提供されます。Kubernetes Engine で提供される環境は複数のマシン(具体的には Google Compute Engine インスタンス)で構成されています。これらのマシンがグループ化されてクラスタを形成します。

クラスタの操作には、Kubernetes のメカニズムが使用されます。Kubernetes のコマンドとリソースを使用することで、アプリケーションのデプロイや管理、管理タスクの実行やポリシーの設定、デプロイ済みのワークロードの状態監視を行うことができます。

このラボでは、Container Builder や Container Registry などの Google Cloud Platform のリソースと、デプロイメント、ポッド、サービスなどの Kubernetes のリソースを活用して、Kubernetes Engine にクイズ アプリケーションをデプロイします。

目標

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

  • Dockerfile を作成して、クイズ アプリケーションのフロントエンドとバックエンドのコードをデプロイ用にパッケージ化する。
  • Container Builder を利用して、Docker イメージを作成する。
  • クイズ アプリケーションをホストする Kubernetes Engine クラスタをプロビジョニングする。
  • Kubernetes のデプロイメントを使用して、複製したポッドを Kubernetes Engine にプロビジョニングする。
  • Kubernetes のサービスを活用して、クイズのフロントエンド用ロードバランサをプロビジョニングする。

Qwiklabs の設定

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

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

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

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

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

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

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

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

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

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

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

Cloud Shell コードエディタを起動する

Cloud Shell で、[エディタを開く] アイコン(鉛筆の形)をクリックしてコードエディタを起動します。

editor.png

クイズ アプリケーションを用意する

このセクションでは、Cloud Shell にアクセスしてクイズ アプリケーションを含む git リポジトリのクローンを作成してから、環境変数を設定し、アプリケーションを実行します。

Cloud Shell でソースコードのクローンを作成する

[ターミナルを開く] をクリックして、レポジトリラボをクローンします。

git clone https://github.com/GoogleCloudPlatform/training-data-analyst

作業ディレクトリのショートカットとしてソフトリンクを作成します。

ln -s ~/training-data-analyst/courses/developingapps/v1.2/python/kubernetesengine ~/kubernetesengine

クイズ アプリケーションを構成する

作業ディレクトリを変更します。

cd ~/kubernetesengine/start

クイズ アプリケーションを構成します。

. prepare_environment.sh

このスクリプト ファイルを実行すると、以下の処理が行われます。

  • Google App Engine アプリケーションが作成される。
  • GCLOUD_PROJECTGCLOUD_BUCKET の環境変数がエクスポートされる。
  • pip が更新され、その後 pip install -r requirements.txt が実行される。
  • Google Cloud Datastore にエンティティが作成される。
  • Google Cloud Pub/Sub トピックが作成される。
  • Cloud Spanner のインスタンス、データベース、テーブルが作成される。
  • Google Cloud Platform のプロジェクト ID が出力される。

次のメッセージが表示されたら、クイズ アプリケーションが構成されたことを示しています。

出力例メッセージ

Creating Cloud Pub/Sub topic
Created topic [projects/qwiklabs-gcp-92b7e5716e0cbf7e/topics/feedback].
Created subscription [projects/qwiklabs-gcp-92b7e5716e0cbf7e/subscriptions/worker-subscription].
Creating Cloud Spanner Instance, Database, and Table
Creating instance...done.
Creating database...done.
Project ID: qwiklabs-gcp-92b7e5716e0cbf7e

[進行を確認] をクリックして、目標に沿って進行していることを確認します。

クイズ アプリケーションを構成する

コードを確認する

このセクションでは、アプリケーションのファイルを確認します。

Cloud Shellでインストールしたshellエディター(例:nanovimと Cloud Shellエディター)を使用してファイルを拝見と変更することができます。このラボでCloud Shellエディターを使用します。

このラボでは、Cloud Shell コードエディタを使用してクイズ アプリケーションのコードを確認します。

コードを確認する

training-data-analyst/courses/developingapps/v1.2/python/kubernetesengine/start に移動します。

クイズ アプリケーションのフォルダ構成は、Kubernetes Engine でデプロイされるときの状態が反映されています。

ウェブ アプリケーションは、frontend というフォルダにあります。

Cloud Pub/Sub にサブスクライブしてメッセージを処理するワーカー アプリケーションのコードは、backend というフォルダにあります。

frontendbackend のフォルダにある [Dockerfile] は Docker の構成ファイルで、[backend-deployment.yaml] ファイルと [frontend-deployment.yaml] ファイルは Kubernetes Engine の構成ファイルです。

Kubernetes Engine クラスタを作成し、それに接続する

Kubernetes Engine クラスタを作成する

  1. Cloud Platform Console で、ナビゲーション メニュー > [Kubernetes Engine] > [クラスタ] をクリックします。

    kubernetes-cluster.png

  2. [クラスタを作成] をクリックします。

  3. クラスタを設定します。以下に提供してある値を入力します、他の値をそのままで置きます:

プロパティ

名前

quiz-cluster

ゾーン

us-central1-b

default Pool > セキュリティ > アクセス スコープ

[すべての Cloud API に完全アクセス権を許可] を選択して、[保存]をクリックします。

  1. [作成] をクリックします。 クラスタがプロビジョニングされるまでに数分かかります。

[進行を確認] をクリックして、目標に沿って進行していることを確認します。

Kubernetes Engine クラスタ を作成する

クラスタに接続する

このセクションでは、クイズ アプリケーションを Kubernetes クラスタに接続します。

  1. クラスタの準備ができたら、[接続] をクリックします。

kubernetes_cluster_ready.png

  1. [クラスタに接続] で、[Cloud Shell で実行] をクリックして、「gcloud container clusters get-credentials quiz-cluster --zone us-central1-b --project [Project-ID]」に類似したコマンドを実行します。Cloud shell で Enter キーを押して、コマンドを実行します。

  2. 次のコマンドを実行して、クラスタ内のポッドを一覧表示します。

kubectl get pods

クラスタ内にポッドがないため、「No resources found」のようなレスポンスが返されます。これにより、セキュリティが構成済みで、kubectl コマンドライン ツールでクラスタへの操作が行えることを確認できました。

Container Builder を使用して Docker イメージを作成する

このセクションでは、アプリケーションのフロントエンドとバックエンド用の Dockerfile を作成して、Container Builder を使用してイメージを作成しておよびそのイメージを Container Registry に保存します。

フロントエンドとバックエンド用の Dockerfile を作成する

Cloud Shell コードエディタで frontend/Dockerfile を開き、以下の処理を行うコードのブロックを追加します。

  • Dockerfile コマンドを記述して、開始点として Google の Python App Engine イメージを使用するカスタム Docker イメージの作成を初期化します。
  • Dockerfile コマンドを記述して、仮想環境を有効化します。
  • Dockerfile コマンドを記述して、ビルドプロセスの一部として「pip install」を実行します。
  • Dockerfile コマンドを記述して、現在のフォルダの内容をコンテナの /app パスに追加します。
  • gunicorn」で始まるステートメントを入力して、Dockerfile を完成させます。コンテナの実行時にこのステートメントが実行されます。Gunicorn(Green Unicorn)は HTTP サーバーで、Python ウェブ サーバー ゲートウェイ インターフェース(WSGI)の仕様に対応しています。

次のコードをコピーして Dockerfile に貼り付けます。

FROM gcr.io/google_appengine/python

RUN virtualenv -p python3.7 /env

ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

ADD . /app

CMD gunicorn -b 0.0.0.0:$PORT quiz:app

backend/Dockerfile ファイルを開き、次のコードをコピーして貼り付けます。

FROM gcr.io/google_appengine/python

RUN virtualenv -p python3.7 /env

ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt

ADD . /app

CMD python -m quiz.console.worker

Container Builder で Docker イメージを作成する

  1. Cloud Shellで、[start]フォルダにあることを確認します:

  2. cd ~/kubernetesengine/start
    
  3. フロントエンドDocker イメージを作成ため、次のコマンドを実行します:

gcloud builds submit -t gcr.io/$DEVSHELL_PROJECT_ID/quiz-frontend ./frontend/

ファイルは Cloud Storage にステージングされ、Docker イメージがビルドされて Container Registry に保存されます。この処理には数分かかります。

出力メッセージに互換性がないことを示すメッセージが表示された場合は、無視してください。

  1. 次のコマンドを実行して、バックエンドの Docker イメージをビルドします。

gcloud builds submit -t gcr.io/$DEVSHELL_PROJECT_ID/quiz-backend ./backend/

バックエンドの Docker イメージの準備ができると、最後に次のようなメッセージが表示されます。

DONE
-----------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE
                                                             IMAGES
   STATUS
be0326f4-3f6f-42d6-850f-547e260dd4d7  2018-06-13T22:20:16+00:00  50S       gs://qwiklabs-gcp-3f89d0745056ee31_cloudbuil
d/source/1528928414.79-4914d2a972f74e188f40ced135662b7d.tgz  gcr.io/qwiklabs-gcp-3f89d0745056ee31/quiz-backend (+1 more
)  SUCCESS
  1. Cloud Platform Consoleナビゲーション メニューで、[Container Registry] をクリックします。 quiz-frontendquiz-backend の 2 つのポッドが表示されます。

backend_frontend.png

  1. [quiz-frontend] をクリックします。

container-image.png

[進行を確認] をクリックして、目標に沿って進行していることを確認します。

Container Builder を使用して Docker イメージを作成する

Kubernetes のデプロイメントとサービスのリソースを作成する

このセクションでは、Kubernetes のデプロイメントとサービスのリソースの仕様を含むテンプレート yaml ファイルを変更し、Kubernetes Engine クラスタでリソースを作成します。

Kubernetes のデプロイメント ファイルを作成する

  1. Cloud Shell コードエディタで、[frontend-deployment.yaml] ファイルを開きます。
  1. 以下の値を使用して、[frontend-deployment.yaml] ファイルのプレースホルダを置き換えます。

プレースホルダ名

[GCLOUD_PROJECT]

GCP プロジェクト ID

Cloud Shell で「echo $GCLOUD_PROJECT」と入力するとプロジェクト ID が表示されます)

[GCLOUD_BUCKET]

プロジェクトのメディア バケットの Cloud Storage バケット名

Cloud Shell で「echo $GCLOUD_BUCKET」と入力するとバケット名が表示されます)

[FRONTEND_IMAGE_IDENTIFIER]

フロントエンド イメージの識別子は gcr.io/[Project_ID]/quiz-frontend のような形式になります

  1. ファイルを保存します。
  2. 以下の値を使用して、[backend-deployment.yaml] ファイルのプレースホルダを置き換えます。

プレースホルダ名

[GCLOUD_PROJECT]

GCP プロジェクト ID

[GCLOUD_BUCKET]

プロジェクトのメディア バケットの Cloud Storage バケット ID

[BACKEND_IMAGE_IDENTIFIER]

バックエンド イメージの識別子は gcr.io/[Project_ID]/quiz-backend のような形式になります

  1. ファイルを保存します。
  2. [frontend-service.yaml] ファイルの内容を確認します。

デプロイメントとサービスのファイルを実行する

  1. Cloud Shell で、クイズのフロントエンド デプロイメントをプロビジョニングします。

kubectl create -f ./frontend-deployment.yaml
  1. クイズのバックエンド デプロイメントをプロビジョニングします。

kubectl create -f ./backend-deployment.yaml
  1. クイズのフロントエンド サービスをプロビジョニングします。

kubectl create -f ./frontend-service.yaml

[進行を確認] をクリックして、目標に沿って進行していることを確認します。

Kubernetes デプロイメント とサービスのリソースを作成する

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

このセクションでは、デプロイされたポッドとサービスを確認し、クイズ アプリケーションに移動します。

デプロイされたリソースを確認する

  1. Google Cloud Platform Consoleナビゲーション メニューで、[Kubernetes Engine] をクリックします。
  2. [ワークロード] をクリックします。
  1. [quiz-frontend] をクリックします。[管理対象ポッド] に 3 つの quiz-frontend ポッドがあります。

  2. 下にある[サービスの公開]部分で、[エンドポイント]部分を探して IP アドレスをコピーして、新しいタブとウインドウの URL で入力します。

app.png

  1. 新しいタブでクイズ アプリケーションが開かれます。これはアプリケーションが適切にデプロイされたことを示しています。ここでラボを終了することもできますが、時間が残っている場合はクイズを作成してみましょう。

これで完了です。

これで、セルフペースラボ、App Dev: Deploying the Application into Kubernetes Engine - Python を完了しました。このラボで GCP リソースと Kubernetes リソースを使用してクイズ アプリケーションを実行します。

fbd1fd568c488208.pngimg/CloudDevelopment_125.png

クエストの終了

この App Dev: Deploying the Application into Kubernetes Engine - Python のセルフペースラボは、「Application Development - Python」「Cloud Development」 クエストの一部です。クエストとは学習パスを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なその他の Qwiklabs のクエストもご確認ください。

次のステップと詳細情報

Kubernetes Engine について学習します。

マニュアルの最終更新日: 2020 年 10 月 16 日
ラボの最終テスト日: 2020 年 10 月 16 日

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