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 は現在、ビジネスを拡張したいと考えています。

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

アプリケーションをモダナイズし、Google Cloud に正常に移行するために、GKE Enterprise を導入しました。

目標

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

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

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

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

デプロイされるもの

Bank of Anthos on Google Cloud をデプロイすると、プロジェクトで以下がプロビジョニングされます。

  • 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. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  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 のドキュメントをご覧ください。

Workloads

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

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

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

[概要] タブに、GKE クラスタのワークロードと名前空間のリストが表示されます。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] ページに移動

このページには、[リスト] ビューと [トポロジ] ビューが並べて表示され、システム サービスを含めて、すべてのプロジェクトのマイクロサービスが表示されます。[サービス メッシュ] ページのデータが入力されるまで時間がかかることがあります。トポロジビューに部分的な図が表示される場合、または図が表示されない場合は、クラスタで 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 が表示されます。このビューを展開するには、リストビュー [Panel](左パネル) をクリックします。

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

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

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

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

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

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

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 を使用してデプロイを再度実行します。

すべてのサービスが表示されないサービス メッシュ ページ

Bank of Anthos アプリケーションをデプロイした後、マイクロサービス ページにプロジェクトのマイクロサービスが表示されるまでに数分待つことが必要な場合があります。数分経過しても [サービス メッシュ] ページの一部またはすべてのサービスが表示されない場合は、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 を入力します。

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

次のステップ