チェックポイント
Deploy infrastructure with Terraform
/ 100
Terraform を使用した Kubernetes ロードバランサ Service のデプロイ
GSP233
概要
Terraform のプロバイダは、上流の API を論理的に抽象化したものです。このラボでは、Kubernetes クラスタを設定して LoadBalancer タイプの Nginx Service をデプロイする方法について説明します。
目標
このラボでは、次の方法について学びます。
- Terraform を使用して Kubernetes クラスタと Service をデプロイする
前提条件
このラボでは、以下の経験があることを前提としています。
- Kubernetes Service に関する基本的な知識
-
kubectl
CLI に関する基本的な知識
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Kubernetes Service
Service とは、クラスタで実行される Pod のグループです。Service は「安価」であるため、クラスタ内で多くの Service を使用できます。Kubernetes Service を使用すると、マイクロサービス アーキテクチャを効率的に実現できます。
Service は、ロード バランシング、アプリケーション間のサービス ディスカバリ、アプリケーションをダウンタイムなしでデプロイするための機能など、クラスタ全体で標準化される重要な機能を提供します。
各 Service には、その Service のデータを処理する Pod を定義するラベルクエリが含まれています。このラベルクエリは、1 つ以上のレプリケーション コントローラによって作成される Pod に頻繁に一致します。デプロイ ソフトウェアで Kubernetes API を使用して Service のラベルクエリを更新することにより、強力なルーティング シナリオを実現できます。
Terraform を使用する理由
YAML ファイルに記述される Kubernetes リソースはすべて、API 呼び出しにマッピングされた kubectl
などの CLI ベースのツールを使用して管理できますが、Terraform によるオーケストレーションにはいくつかのメリットがあります。
- 1 つの言語 - Kubernetes インフラストラクチャのプロビジョニングとアプリケーションのデプロイに同じ構成言語を使用できます。
-
ずれの検出 -
terraform plan
を使用すると、適用しようとしている構成と現状との相違をいつでも確認できます。 - ライフサイクル全体の管理 - Terraform では、最初にリソースを作成するだけでなく、追跡しているリソースを 1 つのコマンドで作成、更新、削除できます。それらのリソースを特定する API を調べる必要はありません。
- 同期フィードバック - 非同期動作は便利ですが、オペレーション結果(エラー、作成されたリソースの詳細など)の確認がユーザーに委ねられるため、非生産的な場合もあります。たとえば、ロードバランサの IP やホスト名はプロビジョニングが完了するまでわからないため、ロードバランサを参照する DNS レコードを作成できません。
- 関係のグラフ - Terraform ではリソース間の関係が認識されるため、スケジューリングに役立ちます。たとえば、Kubernetes クラスタの Service の作成は、そのクラスタが作成されるまで行われません。
タスク 1. サンプルコードのクローンを作成する
- まず、Cloud Shell で、サンプルコードのクローンを作成します。
-
tf-gke-k8s-service-lb
ディレクトリに移動します。
タスク 2. コードを理解する
-
main.tf
ファイルの内容を確認します。
出力例:
-
region
、zone
、network_name
の変数が定義されています。これらは Kubernetes クラスタの作成に使用されます。 - Google Cloud プロバイダにより、このプロジェクトのリソースを作成できます。
- 適切なネットワークとクラスタを作成するためのリソースがいくつか定義されています。
- 最後に、
terraform apply
の実行後に表示される出力があります。
-
k8s.tf
ファイルの内容を確認します。
出力例:
- このスクリプトは、Terraform を使用して Kubernetes プロバイダを構成し、Service、Namespace、replication_controller リソースを作成します。
- このスクリプトは
nginx
サービス IP を出力として返します。
タスク 3. 依存関係を初期化、インストールする
terraform init
コマンドを使用して、Terraform 構成ファイルを含む作業ディレクトリを初期化します。
このコマンドは、いくつかの初期化ステップを実行して、作業ディレクトリを使用できるように準備します。このコマンドは、いつでも何度でも安全に実行できます。実行すると、作業ディレクトリに構成の変更が反映されます。
-
terraform init
を実行します。
出力例:
-
terraform apply
コマンドを実行します。このコマンドを使用して、構成を望ましい状態するために必要な変更を適用します。
-
Terraform のアクションを確認し、作成されるリソースを調べます。
-
準備ができたら、「yes」と入力し、Terraform アクションを開始します。
完了すると、以下のような出力が表示されるはずです。
出力例:
Terraform によって作成されたリソースを確認する
- コンソールで、ナビゲーション メニュー > [Kubernetes Engine] に移動します。
-
tf-gke-k8s
クラスタをクリックして構成を確認します。 - 左側のパネルで [Gateway、Service、Ingress] をクリックして、
nginx
Service のステータスを確認します。 - [エンドポイント] の IP アドレスをクリックして、新しいブラウザタブで「
Welcome to nginx!
」ページを開きます。
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform を使用してインフラストラクチャが正常にデプロイされた場合は、評価スコアが表示されます。
お疲れさまでした
このラボでは、Terraform を使用して Kubernetes クラスタと Service を初期化、計画、デプロイしました。
クエストを完了する
このセルフペース ラボは、「Managing Cloud Infrastructure with Terraform」と「DevOps Essentials」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
次のラボを受講する
「Terraform を使用した HTTPS コンテンツ ベース ロードバランサ」に進んでクエストを続けるか、以下のおすすめのラボをご確認ください。
次のステップと詳細情報
他のユーザーが Terraform をどのように使用しているのかコミュニティでご確認ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 9 月 28 日
ラボの最終テスト日: 2023 年 9 月 28 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。