GKE Enterprise を試す


Terraform を使用してサンプル アプリケーションをデプロイし、Google Kubernetes Engine(GKE)Enterprise エディションを試します。GKE クラスタ、Anthos Service Mesh、複数のマイクロサービスからなるアプリケーションを実際のハンズオン環境にデプロイします。このチュートリアルでは、Google Cloud に GKE Enterprise をデプロイした架空の銀行を例にして、これらの機能の使い方を紹介します。関心のある GKE Enterprise の機能については、銀行の GKE Enterprise ストーリーのフォローアップ チュートリアルをご覧ください。

GKE Enterprise を強化する GKE Enterprise の機能の詳細については、技術概要をご覧ください。ただし、このチュートリアルは、GKE Enterprise や Terraform に精通していることを前提としていません。Kubernetes の基本的なコンセプト(クラスタなど)には精通している必要があります。これらのコンセプトに詳しくない場合は、Kubernetes の基本Google Kubernetes Engine(GKE)のドキュメントAnthos Service Mesh 用アプリの準備をご覧ください。

本番環境をインストールする準備ができたら、セットアップ セクションをご覧ください。

導入への道のり

あなたは Bank of Anthos のプラットフォーム担当リーダーです。Bank of Anthos は、約 10 年前に 2 台のサーバーで決済処理を行う小さな会社としてスタートしました。以来、何千人もの従業員を雇用し、成長し続けるエンジニアリング組織を擁する、成功を収めた民間金融機関に成長しました。Bank of Anthos は現在、ビジネスを拡張したいと考えています。

あなたとチームは、新しいビジネス価値の創出よりもインフラストラクチャの保守に多くの時間と費用を費やしていることに気付きました。数十年にわたって既存のスタックに投資した累積的な経験を積んできましたが、それはこの銀行が拡張するに従って必要とされるグローバル デプロイの規模に対応する適切なテクノロジーでないことはわかっています。

あなたは、GKE Enterprise を導入してアプリケーションをモダナイズし、Google Cloud の移行に成功して拡張の目標を達成しました。

目標

このチュートリアルでは、次のタスクを通じて GKE Enterprise の主な機能について学習します。

  • クラスタ、アプリケーション、エンタープライズ機能(Anthos Service Mesh、Config Sync、Policy Controller)を使用して、GKE Enterprise 環境をデプロイします。

  • Google Cloud コンソールを使用して、アプリケーションで使用される GKE リソースを確認します。

  • Anthos Service Mesh を使用してアプリケーション サービスを監視します。

デプロイされるもの

Google Cloud に Bank of Anthos をデプロイすると、プロジェクトに次のプロビジョニングが行われます。

  • Google Cloud で実行されている GKE クラスタ: anthos-sample-cluster1

  • クラスタにインストールされている Anthos Service Meshanthos-sample-cluster1 でのサービス メッシュの管理には Anthos Service Mesh を使用します。

  • Config SyncPolicy Controlleranthos-sample-cluster1 の構成およびセキュリティ ポリシーを管理します。

  • クラスタ上で実行される Bank of Anthos アプリケーション。これは、Java、Python、JavaScript などのさまざまなプログラミング言語で記述された多くのマイクロサービスを使用するウェブベースのバンキング アプリケーションです。

費用

サブスクリプションを購入している場合を除き、Bank of Anthos アプリケーションをデプロイすると、料金ページに記載されている Google Cloud の GKE Enterprise の従量課金制が適用されます。

また、Compute Engine VM やロードバランサの費用など、Bank of Anthos アプリケーションの実行中に発生した他の Google Cloud の費用もお客様の負担となります。

追加費用の発生を避けるため、チュートリアルを終了した後、またはデプロイメントを試した後に、クリーンアップすることをおすすめします。

始める前に

次の前提条件を満たしていることを確認してください。

プロジェクトの選択または作成

既存のプロジェクトを使用することも、このチュートリアル用の新しいプロジェクトを作成することもできます。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

Cloud Shell をアクティブにする

Cloud Shell は Google Cloud のインタラクティブなシェル環境であり、ウェブブラウザからプロジェクトやリソースを管理できます。

Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

Cloud Shell をアクティブにする

IAM ロールを付与する

既存のプロジェクトを使用している場合は、Google Cloud アカウントに、このチュートリアルに必要な IAM ロールがあることを確認します。

Google アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。 roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iam.securityAdmin, roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/logging.logWriter, roles/gkehub.admin, roles/viewer, roles/monitoring.viewer

$ gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
  • PROJECT_ID は、実際のプロジェクト ID に置き換えます。
  • EMAIL_ADDRESS は実際のメールアドレスに置き換えます。
  • ROLE は、個々のロールに置き換えます。

Terraform を使用して Bank of Anthos をデプロイする

前提条件をすべて満たしたら、Cloud Shell で次のコマンドを実行して、Bank of Anthos をデプロイします。

  1. デフォルト プロジェクトが、アプリケーションをデプロイするプロジェクト ID に設定されていることを確認します。まだ設定されていない場合は、Cloud Shell で次のコマンドを実行します。

    gcloud config set project PROJECT_ID
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

  2. Cloud Shell に Bank of Anthos GitHub リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git
    
  3. 環境変数 TF_VAR_project をプロジェクト ID に設定します。

    export TF_VAR_project=PROJECT_ID
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。

  4. インストール スクリプトをホストするディレクトリに移動します。

    cd bank-of-anthos/iac/tf-anthos-gke
    
  5. Terraform を初期化します。最新バージョンの Google プロバイダを使用するには、-upgrade フラグを指定します。

    terraform init -upgrade
    
  6. (省略可)作成されるリソースを確認します。

    terraform plan
    
  7. Terraform 構成を適用して必要なリソースを作成し、Bank of Anthos をデプロイします。

    terraform apply
    

上記のコマンドが正常に完了すると、Bank of Anthos アプリケーションとその上で実行されるリソースがプロジェクトにデプロイされます。デプロイエラーが発生した場合は、トラブルシューティングをご覧ください。

GKE Enterprise の概要を見る

GKE Enterprise の機能は、フリート(一緒に管理できる Kubernetes クラスタの論理グループ)という考え方に基づいて構築されています。Google Cloud コンソールの GKE Enterprise の概要では、フリート全体の概要を確認できます。

GKE Enterprise の概要に移動する

[概要] には、次の情報が表示されます。

  • フリート内のクラスタ数と、それらのクラスタが正常かどうか。この例では、[このフリート内のクラスタ] セクションに 1 つの GKE クラスタがあることがわかります(他のフリート メンバー クラスタが存在しないことを前提としています)。
  • フリートのリソース使用率(CPU、メモリ、ディスク使用率など)をフリートとクラスタごとに集計した値。
  • フリートで特定されたセキュリティ上の問題、フリート全体の Policy Controller のカバレッジ、Config Sync パッケージの同期ステータス。

GKE リソースを確認する

GKE の [クラスタ] ページには、プロジェクト内のすべてのクラスタが表示されます。フリートに登録されているクラスタは、[フリート] 列に表示されます。

このセクションでは、Bank of Anthos の GKE リソースについて詳しく説明します。

クラスタ

  1. Google Kubernetes Engine コンソールで、[クラスタ] ページに移動します。

    [クラスタ] ページに移動

  2. 新しくデプロイされた anthos-sample-cluster1 クラスタをクリックします。表示されたクラスタの詳細ページで、クラスタの基本情報と、クラスタのネットワーク構成とセキュリティ構成を確認できます。このクラスタでどの GKE 機能が有効になっているかは、[機能] セクションで確認できます。

  3. [ノード] タブをクリックして、クラスタ内のすべてのワーカーマシンを表示します。さらにドリルダウンすると、各ノードで実行中のワークロード Pod と、そのノードのリソースの概要(CPU、メモリ、ストレージ)を確認できます。

GKE クラスタとノードの詳細については、GKE のドキュメントをご覧ください。

ワークロード

GKE コンソールの [ワークロード] ビューには、すべての GKE クラスタで実行されているワークロードの集計ビューが表示されます。

Google Kubernetes Engine コンソールで、[ワークロード] ページに移動します。

[ワークロード] ページに移動

[概要] タブには、GKE クラスタのワークロードと Namespace のリストが表示されます。Namespace でフィルタして、各 Namespace で実行されているワークロードを確認できます。

Service と Ingress

[Services と Ingress] ビューには、プロジェクトの Service リソースと Ingress リソースが表示されます。Service では一連の Pod がエンドポイントでネットワーク サービスとして公開され、Ingress ではクラスタ内の Service への外部アクセスが管理されます。ただし、Bank of Anthos では銀行へのトラフィックに通常の Kubernetes Ingress ではなく、Istio Ingress ゲートウェイ サービスを使用しています。この場合、Anthos Service Mesh で、メッシュのインバウンド トラフィックへの複雑なトラフィック ルーティングを追加できます。このチュートリアルの後半では、サービス メッシュのオブザーバビリティ機能を使用する場合の動作について説明します。

  1. Google Kubernetes Engine コンソールで、[Services と Ingress] ページに移動します。

    [Services と Ingress] ページに移動

  2. Bank of Anthos Ingress ゲートウェイを見つけるには、使用可能なサービスのリストを下にスクロールして、frontend という名前のサービスを探します。Ingress ゲートウェイでは、アプリケーション サービス メッシュへのインバウンド トラフィックが管理されます。この場合、その詳細情報を使用して銀行のウェブ フロントエンドにアクセスできます。

  3. frontend サービスの IP アドレス エンドポイントをクリックします。Bank of GKE Enterprise のウェブ インターフェースが開きます。

サービスを監視する

GKE Enterprise では、サービス管理とオブザーバビリティは Anthos Service Mesh によって提供されます。Anthos Service Mesh は Istio を利用するツールセットで、信頼性の高いサービス メッシュのモニタリングと管理に役立ちます。Anthos Service Mesh の詳細と、マイクロサービスの管理方法については、Anthos Service Mesh のドキュメントをご覧ください。コンテナでのマイクロサービスの使用や実行できる内容で不明な点がある場合は、Anthos Service Mesh 用のアプリの準備をご覧ください。

この例では、サンプル デプロイのクラスタでマイクロサービス ベースの Bank of Anthos サンプルアプリを実行しています。アプリケーションには、クラスタに対する少量の負荷をシミュレートする loadgenerator ユーティリティが含まれているため、ダッシュボードで指標とトラフィックを確認できます。

このセクションでは、GKE Service Mesh のページを使用して、このアプリケーションのサービスとトラフィックを確認します。

Google Kubernetes Engine コンソールで、[Service Mesh] ページに移動します。

[Service Mesh] ページに移動

このページでは、リストビューとトポロジビューが並べて表示されます。このビューには、システム サービスを含む、プロジェクトのすべてのマイクロサービスが表示されます。[Service Mesh] ページにデータが表示されるまでに時間がかかることがあります。トポロジビューで図が部分的に表示される場合や、図が表示されない場合は、クラスタ内の Pod を再起動してみてください。または、次のセクションに進み、後で確認することもできます。

リストビューを使用する

リストの各行は、Bank of Anthos アプリケーションを構成するサービスの 1 つです。たとえば、frontend サービスでは、アプリケーションのウェブ ユーザー インターフェースをレンダリングし、userservice サービスではユーザー アカウントと認証を管理します。

各サービスの一覧には、そのサービスの最新の指標(サーバーエラー率1 秒あたりのリクエスト数など)が表示されます。これらの指標は、GKE Enterprise にデプロイされたサービスに対してすぐに収集されます。これらの統計情報を表示するためにアプリケーション コードを記述する必要はありません。

このビューからドリルダウンすると、各サービスの詳細が表示されます。たとえば、transactionhistory サービスの詳細を確認するには、次のようにします。

  1. サービスリストの [transactionhistory] をクリックします。サービスの詳細ページに、このサービスで利用可能なすべてのテレメトリーが表示されます。

  2. [transactionhistory] ページで、左側のメニューから [連携サービス] を選択します。サービスに対するインバウンド接続とアウトバウンド接続の両方を確認できます。開錠された鍵アイコンは、このポートで相互 TLS(mTLS)を使用して暗号化されていないトラフィックが確認されたことを示します。この仕組みについて詳しくは、GKE Enterprise を保護するのチュートリアルをご覧ください。

    Anthos Service Mesh の連携サービスビューのスクリーンショット

トポロジビューを使用する

トポロジビューでは、サービスとのやり取りを中心に確認できます。凡例からわかるように、グラフにはアプリケーションの Anthos Service Mesh サービス、Istio サービス、Deployment、Pod が表示されます。このビューを開くには、リストビュー「左パネル」の切り替え)をクリックします。

Anthos Service Mesh のトポロジビューのスクリーンショット

Anthos Service Mesh では、相互に通信しているサービスを自動的に監視し、サービス間の接続の詳細が自動的に表示されます。

  • 項目にマウスポインタを合わせると、各サービスからの送信 QPS などの詳細情報が表示されます。

  • ノードをマウスでドラッグすると、グラフの特定部分が見やすくなります。

  • さらにサービスの詳細を確認するには、サービスノードをクリックします。

  • ワークロード ノードの上にポインタを置いて [展開] をクリックすると、このワークロードで現在実行しているインスタンス数などの詳細情報が表示されます。

GKE Enterprise の詳細

このチュートリアルでは多くの GKE Enterprise 機能を紹介してきましたが、このデプロイを使用して GKE Enterprise で行うことはまだ多数あります。フォローアップ チュートリアルにアクセスして、GKE Enterprise のハンズオン タスクを試すか、クリーンアップする前にサンプルを調べてみてください。

トラブルシューティング

Bank of Anthos アプリケーションのデプロイ中に問題が発生した場合は、次のトラブルシューティングのシナリオを参照してください。

Google Cloud APIs が有効になっていない(コード 403)

次のようなエラーが表示されることがあります。

Error: Error creating Feature: failed to create a diff: failed to retrieve Feature resource: googleapi:
Error 403: GKE Hub API has not been used in project {project-number} before or it is disabled.
Enable it by visiting https://console.developers.google.com/apis/api/gkehub.googleapis.com/overview?project={project-number} then retry.
If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

エラーが示すように、API が完全に有効になるまで数分待ってから、terraform apply を使用してデプロイを再度実行します。

Service Mesh のページに一部のサービスが表示されない

Bank of Anthos アプリケーションをデプロイした後、プロジェクトのマイクロサービスが [Service Mesh] ページに表示されるまで数分かかります。数分経過しても [サービス メッシュ] ページの一部またはすべてのサービスが表示されない場合は、Anthos Service Mesh の一部のプロキシがアプリケーション ワークロードと一緒に自動的に起動していない可能性があります。

この問題を解決するには、anthos-sample-cluster1 クラスタの Pod を再起動します。

  • クラスタの認証情報を取得します。

    gcloud container clusters get-credentials anthos-sample-cluster1 --zone us-central1
    
  • Pod を削除します

    kubectl delete pod -n default --all
    
  • Pod が再起動したことを確認します。

    kubectl get pod -n default
    

数分以内に、プロジェクトのマイクロサービスが [Service Mesh] ページに表示されます。

クリーンアップ

Bank of Anthos アプリケーションの機能を詳しく確認できたら、Google Cloud で作成したリソースをクリーンアップして、今後料金が発生しないようにします。

  • オプション 1。プロジェクトを削除できます。ただし、プロジェクトを保持する場合は、オプション 2 を使用してデプロイを削除できます。

  • オプション 2。現在のプロジェクトを保持する場合は、terraform destroy を使用してサンプル アプリケーションとクラスタを削除します。

プロジェクトを削除する(オプション 1)

課金が発生しないようにする最も簡単な方法は、このチュートリアル用に作成したプロジェクトを削除することです。

    Google Cloud プロジェクトを削除します。

    gcloud projects delete PROJECT_ID

デプロイを削除する(オプション 2)

この方法では、Bank of Anthos アプリケーションとクラスタは削除されますが、プロジェクトは削除されません。Cloud Shell で次のコマンドを実行します。

  1. インストール スクリプトをホストするディレクトリに移動します。

    cd bank-of-anthos/iac/tf-anthos-gke
    
  2. サンプルとクラスタを削除します。

    terraform destroy
    
  3. プロンプトが表示されたら、プロジェクト ID を入力します。

再デプロイを計画している場合は、始める前にの説明に従って、すべての要件を満たしていることを確認します。

次のステップ