始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
Kubernetes はオープンソースのプロジェクト(kubernetes.io から入手可能)で、ノートパソコンから可用性の高いマルチノード クラスタ、パブリック クラウドからオンプレミスのデプロイ、仮想マシンからベアメタルまで、さまざまな環境で実行できます。
このラボでは、Kubernetes Engine などのマネージド環境を使用することで、基盤となるインフラストラクチャの設定ではなく、Kubernetes を実際に使用することに焦点が置かれています。Kubernetes Engine は、コンテナ化されたアプリケーションをデプロイするためのマネージド環境です。最新のテクノロジーを利用して、デベロッパーの生産性、リソースの効率性、自動運用、オープンソースの柔軟性の向上を図り、製品化までの時間を短縮します。
このラボでは、次の方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
gcloud container clusters get-credentials io コマンドを実行して再認証してください。
コードを取得するには、Google Cloud Storage バケットからサンプルコードをコピーします。
このサンプルは次のようなレイアウトになっています。
コードが入手できたので、今度は Kubernetes を試してみましょう。
Kubernetes の使用を開始する最も簡単な方法は kubectl create コマンドを使用することです。
Kubernetes が Deployment を 1 つ作成します。Deployment については後ほど詳しく説明しますが、現時点では、「Deployment は Pod が実行されているノードで障害が発生した場合でも、Pod を稼働状態に保つ」ということを知っていれば十分です。
Kubernetes では、すべてのコンテナが Pod で実行されます。
ここでは、パブリック IP アドレスが関連付けられた外部ロードバランサが、Kubernetes によってバックグラウンドで作成されました。このパブリック IP アドレスをヒットするクライアントは、Service の背後にある Pod(このケースでは nginx Pod)にルーティングされます。
ExternalIP フィールドに値が表示されるまでに数秒かかる場合がありますが、これは正常な動作です。このフィールドに値が表示されるまで、数秒ごとに kubectl get services コマンドを再実行してください。
このように、Kubernetes のワークフローは使いやすく、実行および公開用の kubectl コマンドを使用してすぐに開始できます。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。Kubernetes クラスタの作成と Nginx コンテナのデプロイが正常に行われている場合は、評価スコアが表示されます。
ここまで Kubernetes について簡単に説明してきましたが、ここからは各コンポーネントと要約について見ていきます。
Kubernetes の中核にあるのは Pod です。
Pod は、1 つ以上のコンテナのコレクションを表しており、また保持しています。一般に、互いに強い依存関係を持つコンテナが複数存在する場合は、それらのコンテナを単一の Pod 内にパッケージ化します。
次の例は、monolith コンテナと nginx コンテナを含む Pod を示しています。
また、Pod には Volume があります。Volume とは Pod が存在する限り存続するデータディスクで、その Pod 内のコンテナによって使用されます。Pod は、そのコンテンツに対して共有の Namespace を提供します。これは、この例の Pod 内の 2 つのコンテナが互いに通信できることと、接続された Volume を共有できることを意味します。
また、Pod はネットワーク Namespace も共有します。これは、Pod ごとに 1 つの IP アドレスがあることを意味しています。
Pod について、さらに詳しく説明します。
Pod は、Pod 構成ファイルを使用して作成できます。ここでは、fortune-app(おみくじアプリ)の Pod 構成ファイルを詳しく見てみましょう。
出力には、開いている構成ファイルが表示されます。
ここで、いくつか注目すべき点があります。
Pod の IP アドレスやイベントログなど、fortune-app の Pod に関する多くの情報を確認できます。この情報はトラブルシューティングの際に役立ちます。
Kubernetes を利用すると、Pod を構成ファイルに記述して作成し、実行時にその情報を表示することが簡単に行えます。この時点で、Deployment に必要なすべての Pod を作成することが可能です。
デフォルトでは、Pod にプライベート IP アドレスが割り振られ、クラスタの外部から到達することはできません。ローカルポートを fortune-app の Pod 内のポートにマッピングするには、kubectl port-forward コマンドを使用します。
2 つ目の Cloud Shell ターミナルを開いて、2 つのターミナルを使用します。1 つで kubectl port-forward コマンドを実行し、もう 1 つで curl コマンドを発行します。
2 つ目のターミナルで、次のコマンドを実行してポート転送を設定します。
コンテナから、おみくじ入りクッキーが返されました。
「Unauthorized」エラーが返されますが、これは想定内です。
password」を使用してログインします。ログインすると JWT トークンが返されます。
ホスト パスワードの入力を求められたら、秘密のパスワード「password」をもう一度入力します。
このコマンドを使用してトークンをコピーしたら、そのトークンを使用して curl で安全なエンドポイントをヒットします。
この時点でアプリケーションからおみくじが返されるため、すべてが正しく実行されていることがわかります。
このように、Pod の操作は kubectl コマンドを使用する場合と同じくらい簡単です。リモートでコンテナをヒットする必要がある場合、またはログインシェルを取得する必要がある場合は、開始して実行するのに必要なものがすべて Kubernetes から提供されます。
Pod は永続的なものではありません。実行チェックや準備チェックに失敗するなど、さまざまな理由で停止または開始することがあり、それによって問題が発生することがあります。
Pod のセットと通信したい場合にPod を再起動すると、IP アドレスが変わることがあります。
そのために Service が必要になります。Service は、Pod に安定したエンドポイントを提供します。
サービスはラベルを使用して、どのポッドを操作するかを決定します。Pod に正しいラベルが付いている場合は、Service によって自動的に Pod が取得されて公開されます。
Service が Pod のセットに提供するアクセスのレベルは、Service の種類によって異なります。現在、次の 3 つの種類があります。
ここでは、以下の方法を説明します。
Service を作成する前に、まず、HTTPS トラフィックを処理できる安全な Pod を作成します。
安全な Pod を用意できたので、外部に公開します。そのために、Kubernetes Service を作成します。
「app: fortune-app」と「secure: enabled」のラベルを持つすべての Pod を自動的に検出して公開するセレクタが存在します。
これにより、外部トラフィックをポート 31000 から nginx(ポート 443)に転送する方法が決まるため、ここでノードポートを公開する必要があります。下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。fortune-app の Pod と Service が正常に作成されている場合は、評価スコアが表示されます。
Service の公開にはポートを使用します。そのため、別のアプリがユーザーのいずれかのサーバー上のポート 31000 にバインドしようとすると、ポートの衝突が発生する可能性があります。
通常は、Kubernetes がこのポートの割り当てを処理します。このラボでは、後でヘルスチェックを簡単に構成できるようにするため、自分でポートを選択します。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。TCP トラフィックを 31000 ポートで許可するためのファイアウォール ルールが正常に作成されている場合は、評価スコアが表示されます。
すべての設定が完了したので、ポート転送を使用せずに、クラスタの外部から secure-fortune Service をヒットできるはずです。
タイムアウトしました。何が問題なのでしょうか。
注: ここで、簡単な理解度チェックを行います。
次のコマンドを使用して、以下の質問に答えてください。kubectl get services fortune-app
kubectl describe services fortune-app
質問:
ヒント: ラベルと関係があります。次のセクションで問題を解消します。
現在の fortune-app Service にはエンドポイントがありません。このような問題をトラブルシューティングする方法の一つは、ラベルクエリを指定して kubectl get pods コマンドを使用することです。
このラベルクエリでは結果が出力されません。「secure=enabled」ラベルを追加する必要があるようです。
エンドポイントが 1 つ確認できるはずです。
やりました。ヒューストン、コンタクトがありました。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。Pod にラベルが正常に追加されている場合は、評価スコアが表示されます。
このラボの目標は、本番環境でコンテナのスケーリングと管理を行えるようにすることですが、ここで必要になるのが Deployment です。Deployment は、実行中の Pod 数とユーザーによって指定された必要な Pod 数が同じであることを保証する宣言的な方法です。
Deployment の主な利点は、Pod を管理するときにシステムレベルについて細かく意識する必要がないことです。Deployment は、バックグラウンドで ReplicaSet を使って Pod の開始と停止を管理します。Pod の更新またはスケーリングが必要な場合は、Deployment がその処理を行います。また、Pod がなんらかの理由で停止した場合は、その再起動にも対応します。
簡単な例を見てみましょう。
Pod は、作成されたノードの存続期間に関連付けられています。上記の例では、Node3 が停止しています(Pod も停止)。手動で新しい Pod を作成して、そのためのノードを見つける代わりに、Deployment によって新しい Pod が作成されて Node2 で起動されました。
これは良い方法です。
次に、Pod と Service について得た知識すべてを活用し、Deployment を使用して fortune-app アプリケーションを小さな Service に分割しましょう。
ここでは、fortune-app アプリを次の 3 つの部分に分割します。
Service ごとに 1 つの Deployment を作成する準備が整いました。この後、auth Deployment と fortune Deployment 用の内部 Service と、frontend Deployment 用の外部 Service を定義します。これが完了すると、monolith の場合と同様にこれらのマイクロサービスを操作して、各部分を個別にスケーリングおよびデプロイできるようになります。
この Deployment によって auth コンテナのレプリカが 1 つ作成されます。
kubectl create コマンドを実行して auth Deployment を作成すると、Deployment のマニフェスト内のデータに準拠する Pod が 1 つ作成されます。これは、replicas フィールドに指定する数を変更することで、Pod の数をスケールできることを意味しています。
EXTERNAL-IP 列のステータスが pending である場合は、上記のコマンドをもう一度実行します。おみくじが返されます。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。auth、fortune、frontend の各 Deployment が正常に作成されている場合は、評価スコアが表示されます。
これで完了です。Kubernetes を使用してマルチサービス アプリケーションを開発しました。ここで習得したスキルは、Deployment と Service のコレクションを使って、Kubernetes に複雑なアプリケーションをデプロイする際に役立つでしょう。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 8 月 11 日
ラボの最終テスト日: 2025 年 8 月 11 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください
ラボを開始するには、この簡単な手順を完了してください。