
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Google Kubernetes Engine では、Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを行えるマネージド環境が提供されます。この環境は複数のマシン(具体的には、Google Compute Engine インスタンス)で構成され、これらのマシンがグループ化されてクラスタを形成します。
クラスタの操作には、Kubernetes のメカニズムが使用されます。Kubernetes のコマンドとリソースを使用して、アプリケーションのデプロイと管理、管理タスクの実施とポリシーの設定、デプロイ済みワークロードの状態のモニタリングを行うことができます。
このラボでは、Cloud Build や Container Registry などの Google Cloud Platform リソースと、Deployment、Pod、Service などの Kubernetes リソースを使用して、クイズ アプリケーションを Kubernetes Engine にデプロイします。
このラボでは、次のタスクの実行方法について学びます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
このセクションでは、クイズ アプリケーションを含む Git リポジトリのクローンを作成し、環境変数を構成して、このアプリケーションを実行します。
GCLOUD_PROJECT
と GCLOUD_BUCKET
をエクスポートする。mvn clean install
を実行する。次に、クイズ アプリケーションのコードをコードエディタで確認して更新します。Cloud Shell コードエディタを使用することも、Cloud Shell にインストールされている nano
や vim
などの shell エディタを使用することもできます。今回は Cloud Shell コードエディタを使用します。
training-data-analyst/courses/developingapps/v1.3/java/kubernetesengine/start
に移動します。クイズ アプリケーションのフォルダ構造には、Kubernetes Engine にデプロイされるときの状態が新たに反映されています。
frontend
フォルダ: ウェブ アプリケーション用にパッケージ化された出力が含まれています。backend
フォルダ: コンソール アプリケーション用にパッケージ化された出力が含まれています。frontend
フォルダと backend
フォルダのそれぞれに含まれる Dockerfile
: Docker の構成ファイル。現時点では空です。*.yaml
: Kubernetes Engine の構成ファイル。Cloud Shell でターミナルに戻り、次のコマンドを使用してフロントエンド アプリケーションの出力 jar
を frontend
フォルダにコピーします。
クイズのバックエンド アプリケーションを構成します。
バックエンド アプリケーションの出力 jar を backend
フォルダにコピーします。
このセクションでは、クイズ アプリケーションをホストする Google Kubernetes Engine クラスタを作成します。
コンソールで、ナビゲーション メニュー > [Kubernetes Engine] > [クラスタ] をクリックします。
次に [作成] をクリックします。
GKE Standard の [構成] を選択します。.
クラスタを構成します。次の表に含まれるプロパティには表の値を使用し、表にないプロパティはデフォルト値のままにします。
[クラスタの基本] で次の値を設定します。
プロパティ | 値 |
---|---|
名前 | quiz-cluster |
ゾーン | us-central1-b |
default-pool を展開します。
[セキュリティ] で [すべての Cloud API に完全アクセス権を許可] を選択します。
[作成] をクリックします。クラスタのプロビジョニングには数分かかります。
クラスタの準備ができたら、その他アイコンをクリックして [接続] を選択します。
[クラスタに接続する] で、最初のコマンドをクリップボードにコピーします。
[OK] をクリックして [クラスタに接続する] ウィンドウを閉じます。
このコマンドの形式は、gcloud container clusters get-credentials quiz-cluster --zone us-central1-b --project <プロジェクト ID>
です。
Cloud Shell にコマンドを貼り付けて、Enter キーを押します。
または [Cloud Shell で実行] をクリックして Enter キーを押します。
クラスタ内の Pod を一覧表示します。
このコマンドのレスポンスで、クラスタ内に Pod がないことを確認します。
これにより、kubectl
コマンドライン ツールでクラスタへの操作を行えるようセキュリティが構成済みであることを確認できました。
このセクションでは、アプリケーションのフロントエンド用とバックエンド用の Dockerfile を作成します。次に、Cloud Build を使用してイメージをビルドし、Container Registry に格納します。
Cloud Shell コードエディタ([エディタを開く] をクリック)で、frontend/Dockerfile
を開きます。
次の内容をコピーして frontend/Dockerfile
に貼り付けます。
このスクリプトは、一連の Dockerfile コマンドです。
最初のコマンド(FROM gcr.io/google_appengine/jetty9
)は、Google App Engine の Jetty 9 イメージ(gcr.io/google_appengine/jetty9
)を開始点として使用し、カスタム Docker イメージの作成を初期化します。
2 番目のコマンド(VOLUME /tmp
)は、/tmp
というパスを使用して、コンテナのファイル システムにボリュームを作成します。
3 番目のコマンド(ADD ./quiz-frontend-0.0.1.jar /app.jar
)は、ビルドプロセスの一部として Maven のパッケージ化プロセスによって生成されたフロントエンド用の Jar ファイル(uiz-frontend-0.0.1.jar
)を追加します。
4 番目の最後のコマンド(CMD java -jar /app.jar
)は、コンテナの実行時に実行されます。
バックエンド用の Dockerfile の作成方法は、バックエンド用の jar
ファイルを追加することを除いて、フロントエンド用 Dockerfile の作成方法と同じです。
Cloud Shell コードエディタで、backend/Dockerfile
を開きます。
次の内容をコピーして backend/Dockerfile
に貼り付けます。
Cloud Shell([ターミナルを開く] をクリック)で、次のコマンドを入力してフロントエンドの Docker イメージをビルドします。
ファイルは Cloud Storage にステージングされ、Docker イメージがビルドされて Container Registry に保存されます。これには数秒かかります。
バックエンドの Docker イメージをビルドします。
コンソールで、ナビゲーション メニュー > [Container Registry] をクリックします。[quiz-frontend] と [quiz-backend] の 2 つのフォルダが表示されます。
quiz-frontend をクリックします。イメージ名(ハッシュ)、タグ(latest)などの詳細が表示されます。
このセクションでは、Kubernetes の Deployment と Service のリソースの仕様を含むテンプレート ファイル(yaml
)を変更して、Kubernetes Engine クラスタにこれらのリソースを作成します。
コードエディタで、frontend-deployment.yaml
ファイルを開きます。ファイルのスケルトンが作成されています。プレースホルダをプロジェクトに固有の値に置き換えてください。
以下の値を使用して、frontend-deployment.yaml
ファイル内のプレースホルダを置き換えます。
プレースホルダ名 | 値 |
---|---|
[GCLOUD_PROJECT] | GCP プロジェクト ID(プロジェクト ID を表示するには、Cloud Shell で「echo $GCLOUD_PROJECT 」と入力) |
[GCLOUD_BUCKET] | プロジェクトのメディア バケットの Cloud Storage バケット ID。バケット ID は [GCP_Project_ID]-media です。 |
[FRONTEND_IMAGE_IDENTIFIER] |
フロントエンド イメージの識別子(gcr.io/[GCP_Project_ID]/quiz-frontend の形式) |
[ ]
で囲まれている値のみ置き換えてください。
変更後の yaml ファイルは以下のようになります。
quiz-frontend の Deployment は、フロントエンド Docker イメージの 3 つのレプリカを Kubernetes Pod にプロビジョニングし、Kubernetes Engine クラスタの 3 つのノードに分散します。
ファイルを保存します。
backend-deployment.yaml
ファイルを開き、以下の値を使用して backend-deployment.yaml
ファイル内のプレースホルダを置き換えます。
プレースホルダ名 | 値 |
---|---|
[GCLOUD_PROJECT] | GCP プロジェクト ID(または、echo $GCLOUD_PROJECT を使用) |
[GCLOUD_BUCKET] | プロジェクトのメディア バケットの Cloud Storage バケット ID。frontend-deployment.yaml で使用されているのと同じバケットです(バケット ID は [GCP_Project_ID]-media です)。 |
[BACKEND_IMAGE_IDENTIFIER] |
バックエンド イメージの識別子(gcr.io/[GCP_Project_ID]/quiz-backend の形式) |
quiz-backend の Deployment は、バックエンド Docker イメージの 1 つのレプリカを Kubernetes Pod にプロビジョニングし、Kubernetes Engine クラスタの 3 つのノードのいずれかに配置します。
ファイルを保存します。
frontend-service.yaml
ファイルの内容を確認します。
Cloud Shell で、クイズのフロントエンド Deployment をプロビジョニングします。
クイズのバックエンド Deployment をプロビジョニングします。
クイズのフロントエンド Service をプロビジョニングします。
各コマンドで、Kubernetes Engine にリソースがプロビジョニングされます。プロセスの完了には数分かかります。
このセクションでは、デプロイされた Pod と Service を確認し、クイズ アプリケーションに移動します。
コンソールで、ナビゲーション メニュー > [Kubernetes Engine] > [ワークロード] をクリックします。quiz-frontend
と quiz-backend
の 2 つのポッドが表示されます。
Pod のステータスには OK または作成中と表示されます。
quiz-frontend をクリックして quiz-frontend
の概要を表示します。
下にスクロールして、[マネージド Pod] を表示します。
quiz-frontend ロードバランサのステータスには、作成中または OK と表示されます。Service が OK になったら続行します。Service の準備が整うと、IP アドレスのエンドポイントが表示されます。
[サービスの公開] の [エンドポイント] に示されている IP アドレスを選択し、ブラウザの新しいタブで開きます。
テストを受けて、アプリケーションが想定どおりに動作することを確認します。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one