Traffic Director GKE サービス メッシュの概要

このドキュメントは、Kubernetes Gateway API を使用して Traffic Director サービス メッシュをデプロイする Google Kubernetes Engine ユーザーを対象としています。

Kubernetes Gateway API を使用して GKE 用 Traffic Director を構成すると、サービス メッシュのユースケースにサービス間通信、トラフィック管理、グローバル ロード バランシング、セキュリティ ポリシーの適用が可能になります。

Kubernetes API と Google Cloud APIs

Traffic Director サービス メッシュは、次の 2 つの異なる API を使用して構成できます。

このドキュメントと関連する設定ガイドでは、Kubernetes Gateway API を使用して Traffic Director サービス メッシュを構成する手順について説明しています。

Google Kubernetes Engine では Kubernetes Gateway API を使用することをおすすめします。両方の API を使用して、GKE の同じサービス メッシュでルーティングを構成することはおすすめしません。

サービス ルーティング API は Kubernetes Gateway API のリソースと同じリソース名を使用するため、2 つの API を使用する場合は、こちらのほうが簡単です。構成する Kubernetes リソースは、Traffic Director のサービス ルーティング API で表される Google Cloud リソースと機能的に同等です。

以降のセクションでは、Traffic Director と Kubernetes Gateway API の統合で使用されるリソースとアーキテクチャについて説明します。

Gateway API

Gateway API は、Kubernetes でのサービス ネットワーキングをモデル化するリソースの集まりです。Kubernetes Gateway API は、汎用のルーティング API を提供することで、上り(内向き)とロードバランサのユースケースをサポートすることに重点を置いたオープンソース プロジェクトです。汎用ルーティング API には多くの実装があります。Traffic Director のカスタム リソース定義(CRD)は、オープンソースの Gateway API の拡張機能として追加されています。CRD はサービス メッシュのユースケースをサポートし、Gateway API で導入されたものと同じ汎用ルーティング API を使用します。

Gateway API は、ゲートウェイの親リソースと、関連する GatewayClass を使用して階層的に編成され、ルートに接続します。GKE には、Gateway リソースのピアである TDMesh リソースが含まれています。同じ Route タイプを TDMesh リソースに接続できます。TDMesh リソースでは、サービス メッシュのルートとポリシーが関連付けられています。

Gateway API、Gateway リソース、Mesh リソース、ルート
Gateway API、Gateway リソース、Mesh リソース、ルート(クリックして拡大)

フリート

フリートは、論理的にグループ化された 1 つ以上の GKE クラスタで構成されます。フリートを使用すると、機能を管理し、複数のクラスタに一貫した方法でポリシーを適用できます。また、複数のクラスタにまたがる Traffic Director サービス メッシュを管理できます。

アーキテクチャ

Traffic Director は、クラスタのデータプレーンをプログラミングして、Gateway API リソースで指定されたネットワーク動作を実装することで、GKE で Gateway API をサポートします。Traffic Director 自体は Google が管理するコントロール プレーンで、データプレーン トラフィックを処理しません。ワークロードへのサイドカーとして実行される Envoy プロキシまたはプロキシレス gRPC クライアントは、データプレーンでトラフィックを処理します。Traffic Director は、xDSv3 API を使用して Envoy プロキシとプロキシレス gRPC クライアントの両方を構成します。

Traffic Director は、クラスタ内コントローラを実行するよりも堅牢でスケーラブルなマネージド グローバル コントロール プレーン ソリューションを提供します。グローバル ソリューションであるため、Traffic Director は複数の GKE クラスタに分散されたワークロード間でトラフィックをロードバランスできます。次の図では、Traffic Director が 1 つのフリート内にある 3 つのクラスタのサービスへのトラフィックを Gateway API リソースで管理しています。

Gateway API を使用して構成された Traffic Director のマルチクラスタ サービス メッシュ
Gateway API を使用して構成された Traffic Director のマルチクラスタ サービス メッシュ(クリックして拡大)

フリート内の 1 つのクラスタを構成クラスタとして指定します。構成クラスタには Gateway API リソースが保存されます。Traffic Director は、構成クラスタ内のリソースのみを監視し、フリート内の他のクラスタにあるリソースを無視します。構成クラスタの詳細については、GKE ドキュメントの構成クラスタの設計をご覧ください。

GKE マルチクラスタ サービスでは、構成クラスタ内の Gateway API リソースがフリート内の任意のクラスタ内の Kubernetes Service を参照できます。マルチクラスタ サービス ディスカバリの詳細については、マルチクラスタ サービスをご覧ください。

関連情報

Traffic Director は、サービス メッシュのデータプレーンで Envoy プロキシとプロキシレス gRPC の両方をサポートします。どちらのクライアントも、TDMesh リソースの名前と対応するプロジェクト番号をそれぞれのブートストラップ構成に指定し、Traffic Director から特定のサービス メッシュの構成を受け取ります。Kubernetes Gateway API を使用した Traffic Director の設定ガイドには、Envoy とプロキシレス gRPC を使用したデモ用のデータプレーン構成が記載されています。

TDMesh リソース

TDMesh リソースは、Traffic Director のカスタム リソースです。これは、オープンソースの Gateway API の拡張機能であり、Traffic Director のサービス メッシュのユースケースをサポートします。TDMesh リソースを使用して、フリート内にサービス メッシュ インスタンスを作成します。TDMesh リソースに接続されたルートにより、サービス メッシュ内のサービス間のルーティング動作が指定されます。

Route リソース

Gateway API ルートリソースのサブセットを TDMesh リソースに接続して、サービス メッシュ内のサービスレベルのルーティングを指定できます。Traffic Director は、次の Route リソースをサポートしています。

  • HTTPRoute
  • TCPRoute
  • TDGRPCRoute(Traffic Director のカスタム リソース

たとえば、ホスト payments.svc.internal 宛ての HTTP リクエストを Kubernetes Service service-payments に転送するように HTTPRoute を作成できます。データプレーン インスタンスが登録される TDMesh リソースに HTTPRoute リソースを接続すると、メッシュ内のワークロードから送信された HTTP リクエストがそれに応じて転送されます。

このリリースでは、Gateway API の汎用 Route リソースが新しいルートタイプ TDGRPCRoute で拡張されています。新しいルートタイプは、メソッドやサービス定義などのネイティブ gRPC プリミティブで照合することで、gRPC リクエストのルーティングに最高レベルのエクスペリエンスを提供します。

GKE の Gateway API リソースを使用して Traffic Director を構成する
GKE の Gateway API リソースを使用して Traffic Director を構成する(クリックして拡大)

制限事項

  • Traffic Director は、サービス メッシュ内のすべての Kubernetes Service に対して次のデフォルトの動作を構成します。これらの動作は変更できません。
    • TCP ヘルスチェックは、Gateway API Route リソースによって参照されるサービスポートに構成されます。
    • サービスに対するすべての受信リクエストに対して、デフォルトの 30 秒のタイムアウトが構成されます。
    • セッション アフィニティは無効になっています。
  • Envoy 自動インジェクタは、フリートごとに 1 つのメッシュのみをサポートします。
  • Traffic Director のセキュリティ機能を Gateway API で有効にすることはできません。
  • Gateway API のみを使用して、GKE の TDMesh リソースと Route リソースを構成する必要があります。Google Cloud コンソール、gcloud CLI、REST API は使用できません。
  • すべてのクラスタは 1 つのプロジェクト内に存在している必要があります。複数のプロジェクトのクラスタにまたがるサービス メッシュはサポートされていません。
  • Google Cloud コンソールを使用して GKE サービス メッシュを構成または表示することはできません。
  • Cloud Logging と Cloud Monitoring によるコントロール プレーンのオブザーバビリティはサポートされていません。

次のステップ