GSP188
概要
Google Kubernetes Engine では、Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを行えるマネージド環境が提供されます。この環境は複数のマシン(具体的には、Compute Engine インスタンス)で構成され、これらのマシンがグループ化されてクラスタを形成します。
クラスタの操作には、Kubernetes のメカニズムが使用されます。Kubernetes のコマンドとリソースを使用して、アプリケーションのデプロイと管理、管理タスクの実施とポリシーの設定、デプロイ済みワークロードの状態のモニタリングを行うことができます。
このラボでは、Cloud Build や Artifact Registry などの Google Cloud リソースと、Deployment、Pod、Service などの Kubernetes リソースを使用して、クイズ アプリケーションを Kubernetes Engine にデプロイします。
学習内容
このラボでは、次のタスクの実行方法について学びます。
- Dockerfile を作成して、クイズ アプリケーションのフロントエンド コードとバックエンド コードをデプロイ用にパッケージ化する。
- Cloud Build を使用して Docker イメージを作成する。
- クイズ アプリケーションをホストする Kubernetes Engine クラスタをプロビジョニングする。
- Kubernetes の Deployment を使用して、複製 Pod を Kubernetes Engine にプロビジョニングする。
- Kubernetes の Service を使用して、クイズのフロントエンド用ロードバランサをプロビジョニングする。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Cloud Shell エディタを起動する
Cloud Shell で [エディタを開く] をクリックして、コードエディタを起動します。

注: Cloud Shell のほかに、ブラウザの別のタブでコードエディタが起動します。
クイズ アプリケーションを準備する
このセクションでは、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
- デフォルトのリージョンをラボで割り当てられたリージョンに置き換えるには、次のコマンドを実行します。
export APP_REGION={{{project_0.startup_script.app_region | APP_REGION}}}
export REGION={{{project_0.default_region | REGION}}}
sed -i -e 's/us-central1/'"$REGION"'/g' -e 's/us-central/'"$APP_REGION"'/g' -e 's/python3/'"python3.12"'/g' prepare_environment.sh
- クイズ アプリケーションを構成します。
. prepare_environment.sh
このスクリプト ファイルを実行すると、以下の処理が行われます。
- Google App Engine アプリケーションを作成する。
- 環境変数
GCLOUD_PROJECT と GCLOUD_BUCKET をエクスポートする。
- pip を更新し、その後
pip install -r requirements.txt を実行する。
- Google Cloud Datastore にエンティティを作成する。
- Google Cloud Pub/Sub トピックを作成する。
- Cloud Spanner のインスタンス、データベース、テーブルを作成する。
- プロジェクト 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 にインストールされているシェルエディタ(nano や vim)または Cloud Shell エディタを使用できます。このラボでは、Cloud Shell エディタを使用します。
コードを調べる
-
training-data-analyst/courses/developingapps/v1.2/python/kubernetesengine/start に移動します。
クイズ アプリケーションのフォルダ構造には、Kubernetes Engine にデプロイされるときの状態が反映されています。
ウェブ アプリケーションは、frontend というフォルダにあります。
Cloud Pub/Sub にサブスクライブしてメッセージを処理するワーカー アプリケーションのコードは、backend というフォルダにあります。
frontend と backend のフォルダにある Dockerfile は Docker の構成ファイルで、backend-deployment.yaml ファイルと frontend-deployment.yaml ファイルは Kubernetes Engine の構成ファイルです。
Kubernetes Engine クラスタを作成して接続する
このセクションでは、Google Cloud コンソールを使用して Kubernetes Engine クラスタを作成し、接続します。
Kubernetes Engine クラスタを作成する
-
コンソールで、ナビゲーション メニュー
> [Kubernetes Engine] > [クラスタ] をクリックします。
-
[作成] をクリックします。
-
[Standard: 自身でクラスタを管理する] の [構成] をクリックし、次の項目を、記載されている値に設定します。他はすべてデフォルト値のままにします。
|
プロパティ
|
値
|
|
名前
|
quiz-cluster
|
|
ゾーン
|
|
|
デフォルトの [プール] > [セキュリティ] > [アクセス スコープ]
|
[すべての Cloud API に完全アクセス権を許可] を選択
|
-
[作成] をクリックします。クラスタのプロビジョニングには数分かかります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Kubernetes Engine クラスタを作成する
クラスタに接続する
このセクションでは、クイズ アプリケーションを Kubernetes クラスタに接続します。
- クラスタの準備ができたら、操作アイコンをクリックして [接続] を選択します。
![[接続] オプションがハイライト表示された Kubernetes クラスタのリスト](https://cdn.qwiklabs.com/%2BupDvS7bljEAIuAxF38B1CgJi6yOUZNjyKM3PmXUrjM%3D)
- [クラスタに接続する] で、[Cloud Shell で実行] をクリックして、次のようなコマンドを Cloud Shell に入力します。
gcloud container clusters get-credentials quiz-cluster --zone {{{project_0.default_zone|ZONE}}} --project {{{project_0.project_id|Project ID}}}
Enter キーを押し、Cloud Shell でコマンドを実行します。
- 次のコマンドを実行して、クラスタ内の Pod を一覧表示します。
kubectl get pods
クラスタ内に Pod がないため、「No resources found in default namespace」のようなレスポンスが返されます。これで、kubectl コマンドライン ツールでクラスタへの操作を行えるようセキュリティが構成済みであることを確認できました。
Artifact Registry で Docker リポジトリを作成する
Artifact Registry は、コンテナ イメージと言語パッケージの管理に役立ちます。アーティファクトのタイプによって必要な仕様が異なります。たとえば、Maven の依存関係のリクエストは Node の依存関係のリクエストとは異なります。
さまざまな API 仕様をサポートするために、ユーザーが求める API レスポンスの形式を Artifact Registry に把握させる必要があります。これを行うには、リポジトリを作成し、目的のリポジトリ タイプを示す --repository-format フラグを渡します。
- Cloud Shell から次のコマンドを実行して、Docker イメージのリポジトリを作成します。
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location={{{project_0.default_region | REGION}}} \
--description="Docker repository for Container Dev Workshop"
Cloud Shell の承認を求めるプロンプトが表示されたら、[承認] をクリックします。
- Cloud コンソールで、[Artifact Registry] > [リポジトリ] に移動し、
container-dev-repo という名前の新しい Docker リポジトリが作成されていることを確認します。クリックすると、現時点では空であることがわかります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Docker リポジトリを作成する
Cloud Build を使用して Docker イメージをビルドする
このセクションでは、アプリケーションのフロントエンド用とバックエンド用の Dockerfile を作成します。次に、Cloud Build を使用してイメージをビルドし、Artifact Registry に格納します。
フロントエンド用とバックエンド用の Dockerfile を作成する
- Cloud Shell エディタで、
frontend/Dockerfile を開きます。
- 以下の処理を行うコードのブロックを追加します。
- Dockerfile コマンドを記述して、開始点として Google の Python App Engine イメージを使用するカスタム Docker イメージの作成を初期化します。
- Dockerfile コマンドを記述して、仮想環境を有効化します。
- Dockerfile コマンドを記述して、ビルドプロセスの一部として「
pip install」を実行します。
- Dockerfile コマンドを記述して、現在のフォルダの内容をコンテナの
/app パスに追加します。
- 「
gunicorn」で始まるステートメントを入力して、Dockerfile を完成させます。コンテナの実行時にこのステートメントが実行されます。Gunicorn(Green Unicorn)は、Python ウェブ サーバー ゲートウェイ インターフェース(WSGI)の仕様に対応している HTTP サーバーです。
次のコードをコピーして 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
Cloud Build を使用して Docker イメージをビルドする
- Cloud Shell で、
start フォルダが作業ディレクトリになっていることを確認します。
cd ~/kubernetesengine/start
- 次のコマンドを実行して、フロントエンド用の Docker イメージをビルドします。
gcloud builds submit -t {{{project_0.default_region | REGION}}}-docker.pkg.dev/{{{project_0.project_id|Project ID}}}/container-dev-repo/quiz-frontend:v1 ./frontend/
ここでは、Docker イメージがビルドされ、Artifact Registry に保存されます。この処理には数分かかります。
出力メッセージに、互換性がないことを示すメッセージが表示された場合は、無視してください。
- 次のコマンドを実行して、バックエンド用の Docker イメージをビルドします。
gcloud builds submit -t {{{project_0.default_region | REGION}}}-docker.pkg.dev/{{{project_0.project_id|Project ID}}}/container-dev-repo/quiz-backend:v1 ./backend/
バックエンド用の Docker イメージの準備ができると、最後に次のようなメッセージが表示されます。
DONE
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID: 97a3648f-5229-49ef-9c93-a33dbdb421f3
CREATE_TIME: 2024-12-16T13:29:57+00:00
DURATION: 2M10S
SOURCE: gs://qwiklabs-gcp-03-2cae39dd1d7c_cloudbuild/source/1734355794.276254-1b5d85622afb4360910a164f9f29734d.tgz
IMAGES: us-east1-docker.pkg.dev/qwiklabs-gcp-03-2cae39dd1d7c/container-dev-repo/quiz-backend:v1
STATUS: SUCCESS
-
コンソールのナビゲーション メニューで、[Artifact Registry] をクリックし、[container-dev-repo] を選択します。
quiz-frontend と quiz-backend の 2 つの Pod が表示されます。
-
quiz-frontend をクリックします。
注: イメージの名前とタグ(latest)が表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud Build を使用して Docker イメージをビルドする
Kubernetes の Deployment と Service の各リソースを作成する
このセクションでは、Kubernetes の Deployment と Service のリソースの仕様を含むテンプレート yaml ファイルを変更し、Kubernetes Engine クラスタでリソースを作成します。
Kubernetes の Deployment ファイルを作成する
- Cloud Shell エディタで、
frontend-deployment.yaml ファイルを開きます。
注: ファイルのスケルトンはすでに作成されています。プレースホルダをプロジェクト固有の値に置き換えてください。
- 以下の値を使用して、
frontend-deployment.yaml ファイル内のプレースホルダを置き換えます。
|
プレースホルダ名
|
値
|
|
[GCLOUD_PROJECT]
|
プロジェクト ID (プロジェクト ID を表示するには、 Cloud Shell で「echo $GCLOUD_PROJECT」と入力)
|
|
[GCLOUD_BUCKET]
|
プロジェクトのメディア バケット用 Cloud Storage バケット名 (バケット名を表示するには、 Cloud Shell で「echo $GCLOUD_BUCKET」と入力)
|
|
[FRONTEND_IMAGE_IDENTIFIER]
|
フロントエンド イメージの識別子([REGION]-docker.pkg.dev/[Project_ID]/container-dev-repo/quiz-frontend:v1 の形式)
|
注: quiz-frontend の Deployment は、フロントエンド Docker イメージの 3 つのレプリカを Kubernetes Pod にプロビジョニングし、Kubernetes Engine クラスタの 3 つのノードに分散します。
- ファイルを保存します。
- 以下の値を使用して、
backend-deployment.yaml ファイル内のプレースホルダを置き換えます。
|
プレースホルダ名
|
値
|
|
[GCLOUD_PROJECT]
|
プロジェクト ID
|
|
[GCLOUD_BUCKET]
|
プロジェクトのメディア バケット用 Cloud Storage バケット ID
|
|
[BACKEND_IMAGE_IDENTIFIER]
|
バックエンド イメージの識別子([REGION]-docker.pkg.dev/[Project_ID]/container-dev-repo/quiz-backend:v1 の形式)
|
注: quiz-backend の Deployment は、バックエンド Docker イメージの 2 つのレプリカを Kubernetes Pod にプロビジョニングし、Kubernetes Engine クラスタの 3 つのノードのうちの 2 つに分散します。
- ファイルを保存します。
-
frontend-service.yaml ファイルの内容を確認します。
注: Service は、ロードバランサを使用してフロントエンド Deployment を公開します。ロードバランサは、クライアントからのリクエストをフロントエンド Pod の 3 つのレプリカすべてに送信します。
Deployment ファイルと Service ファイルを実行する
- Cloud Shell で、クイズのフロントエンド Deployment をプロビジョニングします。
kubectl create -f ./frontend-deployment.yaml
- クイズのバックエンド Deployment をプロビジョニングします。
kubectl create -f ./backend-deployment.yaml
- クイズのフロントエンド Service をプロビジョニングします。
kubectl create -f ./frontend-service.yaml
注: 上記の各コマンドにより、Kubernetes Engine にリソースがプロビジョニングされます。処理が完了するまでに数分かかります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Kubernetes の Deployment と Service のリソースを作成する
クイズ アプリケーションをテストする
ここでは、デプロイされた Pod と Service を確認し、クイズ アプリケーションを開きます。
デプロイされたリソースを確認する
- コンソールのナビゲーション メニューで、[Kubernetes Engine] をクリックします。
- 左側のメニューで [ワークロード] をクリックします。
注: quiz-frontend と quiz-backend の 2 つのコンテナが表示されます。
ステータスには OK または作成中と表示されます。
1 つまたは両方のコンテナのステータスが「最低限の有用性がない」の場合は、ウィンドウを更新します。
-
quiz-frontend をクリックします。[マネージド Pod] に 3 つの quiz-frontend Pod があります。
-
下の方にある [サービスの公開] の [エンドポイント] で IP アドレスをコピーして、ブラウザの新しいタブまたはウィンドウの URL フィールドに貼り付けます。

- クイズ アプリケーションが開きます。これはアプリケーションが正常にデプロイされたことを意味します。ここでラボを終了することもできますが、時間が残っている場合はクイズを作成してみましょう。
注: 「サイトへの接続は安全ではありません」というポップアップが表示された場合は、[サイトへ移動] をクリックします。
お疲れさまでした
セルフペース ラボ「アプリ開発: Kubernetes Engine へのアプリケーションのデプロイ - Python」はこれで終了です。Google Cloud リソースと Kubernetes リソースを活用して、クイズ アプリケーションをデプロイしました。
次のステップと詳細情報
Kubernetes Engine について学習します。
マニュアルの最終更新日: 2025 年 9 月 24 日
ラボの最終テスト日: 2025 年 9 月 24 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。