Cloud Service Mesh GKE サービス メッシュの概要
この構成はプレビュー版をご利用のお客様に対してサポートされていますが、新規の Cloud Service Mesh ユーザーにはおすすめしません。詳細については、Cloud Service Mesh の概要をご覧ください。
このドキュメントは、Kubernetes Gateway API を使用して Cloud Service Mesh サービス メッシュをデプロイする Google Kubernetes Engine ユーザーを対象としています。
Kubernetes Gateway API を使用して GKE 用 Cloud Service Mesh を構成すると、サービス メッシュのユースケースにサービス間通信、トラフィック管理、グローバル ロード バランシング、セキュリティ ポリシーを適用できます。
Kubernetes API と Google Cloud APIs
Cloud Service Mesh サービス メッシュは、次の 2 つの異なる API を使用して構成できます。
- Google Cloud APIs。サービス ルーティング API または古い API のいずれかです。
- Kubernetes Gateway API
このドキュメントと関連する設定ガイドでは、Kubernetes Gateway API を使用して Cloud Service Mesh サービス メッシュを構成する手順について説明しています。
Google Kubernetes Engine では Kubernetes Gateway API を使用することをおすすめします。両方の API を使用して、GKE の同じサービス メッシュでルーティングを構成することはおすすめしません。
サービス ルーティング API は Kubernetes Gateway API のリソースと同じリソース名を使用するため、2 つの API を使用する場合は、こちらのほうが簡単です。構成する Kubernetes リソースは、Cloud Service Mesh のサービス ルーティング API で表される Google Cloud リソースと機能的に同等です。
以降のセクションでは、Cloud Service Mesh と Kubernetes Gateway API の統合で使用されるリソースとアーキテクチャについて説明します。
Gateway API
Gateway API は、Kubernetes でのサービス ネットワーキングをモデル化するリソースの集まりです。Kubernetes Gateway API は、汎用のルーティング API を提供することで、上り(内向き)とロードバランサのユースケースをサポートすることに重点を置いたオープンソース プロジェクトです。汎用ルーティング API には多くの実装があります。Cloud Service Mesh のカスタム リソース定義(CRD)は、オープンソースの Gateway API の拡張機能として追加されています。CRD はサービス メッシュのユースケースをサポートし、Gateway API で導入されたものと同じ汎用ルーティング API を使用します。
Gateway API は、ゲートウェイの親リソースと、関連する GatewayClass
を使用して階層的に編成され、ルートに接続します。GKE には、Gateway
リソースのピアである TDMesh
リソースが含まれています。同じ Route
タイプを TDMesh
リソースに接続できます。TDMesh
リソースでは、サービス メッシュのルートとポリシーが関連付けられています。
フリート
フリートは、論理的にグループ化された 1 つ以上の GKE クラスタで構成されます。フリートを使用すると、機能を管理し、複数のクラスタに一貫した方法でポリシーを適用できます。また、複数のクラスタにまたがる Cloud Service Mesh サービス メッシュを管理できます。
アーキテクチャ
Cloud Service Mesh は、クラスタのデータプレーンをプログラミングして、Gateway API リソースで指定されたネットワーク動作を実装することで、GKE で Gateway API をサポートします。Cloud Service Mesh 自体は Google が管理するコントロール プレーンで、データプレーン トラフィックを処理しません。ワークロードへのサイドカーとして実行される Envoy プロキシまたはプロキシレス gRPC クライアントは、データプレーンでトラフィックを処理します。Cloud Service Mesh は、xDSv3 API を使用して Envoy プロキシとプロキシレス gRPC クライアントの両方を構成します。
Cloud Service Mesh は、クラスタ内コントローラを実行するよりも堅牢でスケーラブルなマネージド グローバル コントロール プレーン ソリューションを提供します。Cloud Service Mesh はグローバル ソリューションであるため、複数の GKE クラスタに分散されたワークロード間でトラフィックをロードバランスできます。次の図では、Cloud Service Mesh が Gateway API リソースを使用して、1 つのフリートにある 3 つのクラスタのサービスへのトラフィックを管理しています。
フリート内の 1 つのクラスタを構成クラスタとして指定します。構成クラスタには Gateway API リソースが保存されます。Cloud Service Mesh は、構成クラスタ内のリソースのみを監視し、フリート内の他のクラスタにあるリソースを無視します。構成クラスタの詳細については、GKE ドキュメントの構成クラスタの設計をご覧ください。
GKE マルチクラスタ サービスでは、構成クラスタ内の Gateway API リソースがフリート内の任意のクラスタ内の Kubernetes Service を参照できます。マルチクラスタ サービス ディスカバリの詳細については、マルチクラスタ サービスをご覧ください。
リソース
Cloud Service Mesh は、サービス メッシュのデータプレーンで Envoy プロキシとプロキシレス gRPC の両方をサポートします。どちらのクライアントも、TDMesh
リソースの名前と対応するプロジェクト番号をそれぞれのブートストラップ構成に指定することで、Cloud Service Mesh から特定のサービス メッシュの構成を受け取ります。Kubernetes Gateway API を使用した Cloud Service Mesh の設定ガイドでは、Envoy とプロキシレス gRPC を使用したデータプレーン構成のデモンストレーションを行います。
TDMesh
リソース
TDMesh
リソースは、Cloud Service Mesh カスタム リソースです。これは、オープンソースの Gateway API の拡張で、Cloud Service Mesh のサービス メッシュのユースケースをサポートします。TDMesh
リソースを使用して、フリート内にサービス メッシュ インスタンスを作成します。TDMesh
リソースに接続されたルートにより、サービス メッシュ内のサービス間のルーティング動作が指定されます。
Route
個のリソース
Gateway API ルートリソースのサブセットを TDMesh
リソースに接続して、サービス メッシュ内のサービスレベルのルーティングを指定できます。Cloud Service Mesh は、次の Route
リソースをサポートします。
HTTPRoute
TCPRoute
TDGRPCRoute
(Cloud Service Mesh カスタム リソース)
たとえば、ホスト payments.svc.internal
宛ての HTTP リクエストを Kubernetes Service service-payments
に転送するように HTTPRoute
を作成できます。データプレーン インスタンスが登録される TDMesh
リソースに HTTPRoute
リソースを接続すると、メッシュ内のワークロードから送信された HTTP リクエストがそれに応じて転送されます。
このリリースでは、Gateway API の汎用 Route
リソースが新しいルートタイプ TDGRPCRoute
で拡張されています。新しいルートタイプは、メソッドやサービス定義などのネイティブ gRPC プリミティブで照合することで、gRPC リクエストのルーティングに最高レベルのエクスペリエンスを提供します。
制限事項
- Cloud Service Mesh は、サービス メッシュ内のすべての Kubernetes サービスに対して次のデフォルトの動作を構成します。これらの動作は変更できません。
- TCP ヘルスチェックは、Gateway API
Route
リソースによって参照されるサービスポートに構成されます。 - サービスに対するすべての受信リクエストに対して、デフォルトの 30 秒のタイムアウトが構成されます。
- セッション アフィニティは無効になっています。
- TCP ヘルスチェックは、Gateway API
- Envoy 自動インジェクタは、フリートごとに 1 つのメッシュのみをサポートします。
- Gateway API を使用して Cloud Service Mesh のセキュリティ機能を有効にすることはできません。
- Gateway API のみを使用して、GKE の
TDMesh
リソースとRoute
リソースを構成する必要があります。Google Cloud コンソール、gcloud CLI、REST API は使用できません。 - すべてのクラスタは 1 つのプロジェクト内に存在している必要があります。複数のプロジェクトのクラスタにまたがるサービス メッシュはサポートされていません。
- Google Cloud コンソールを使用して GKE サービス メッシュを構成または表示することはできません。
- Cloud Logging と Cloud Monitoring によるコントロール プレーンのオブザーバビリティはサポートされていません。
次のステップ
- Gateway API を使用したサービス メッシュの設定準備について学習する。