Google Cloud APIs を使用する Cloud Service Mesh の対応機能
このドキュメントでは、Cloud Service Mesh で使用できる機能の概要を説明します。
Cloud Service Mesh は、アプリケーション、xDS 互換のデータプレーン(オープンソースの Envoy プロキシまたは gRPC プロキシレス データプレーン)、コントロール プレーンとしての Cloud Service Mesh で構成されます。
次の表で、値 N/A(該当なし)は、特定の Cloud Service Mesh 構成と互換性がないため、機能をサポートできないことを意味します。チェックマークや「なし」を含まない空白スペースは、機能がサポートされていないことを意味します。
これらの機能の一部は、ロード バランシング API でのみ使用できます。サービス ルーティング API を使用し、ロード バランシング API を使用して新しいデプロイを作成しないことを強くおすすめします。
サポートされている xDS バージョン
Cloud Service Mesh は、オープンソースの xDS コントロール プレーン API を使用して、Envoy クライアントとプロキシレス gRPC クライアントを構成します。これらのクライアントは、アプリケーション コードに代わって、Cloud Service Mesh のアプリケーション ネットワーキング機能を提供します。
サポートされているバージョンは xDS v3 のみです。xDS v2 を使用している場合は、xDS v3 に移行します。移行方法については、xDS v2 から xDS v3 に移行するをご覧ください。
メッシュ サービスを実行するプラットフォーム
次のプラットフォームでアプリケーションを実行し、Cloud Service Mesh によって構成されたグローバル サービス メッシュに導入できます。
機能 | 対応 |
---|---|
Compute Engine 仮想マシン(VM)インスタンス | ✔ |
Google Kubernetes Engine(GKE)コンテナ インスタンス | ✔ |
Compute Engine コンテナ インスタンス上の Kubernetes | ✔ |
サービスの管理
Cloud Service Mesh によって構成されたメッシュ内のサービスには、以下のメリットがあります。
サービス ディスカバリ。メッシュ内のアプリケーションが別のアプリケーションにアクセスする必要がある場合は、そのサービスを名前で呼び出すことができます。
バックエンドの自動スケーリング。アプリケーション コードを実行するインスタンスが、必要に応じて動的にスケールアップまたはスケールダウンします。
エンドポイントの自動登録。新しいインスタンスが追加または削除されると、サービスに自動的に関連付けられます。
機能 | 対応 |
---|---|
Compute Engine VM のサイドカー プロキシの自動デプロイ | ✔ |
GKE Pod のサイドカー プロキシの自動インジェクション | ✔ |
ホスト名に基づくサービス ディスカバリ | ✔ |
CPU 使用率に基づくインスタンスの自動スケーリング | ✔ |
トラフィックの負荷や処理能力に基づくインスタンスの自動スケーリング (マネージド インスタンス グループ(MIG)の Compute Engine VM のみ) |
✔ |
構成可能なヘルスチェックに基づくインスタンスの自動修復 | ✔ |
Compute Engine VM の自動エンドポイント登録 | ✔ |
GKE コンテナ インスタンス / Pod の自動エンドポイント登録 | ✔ |
プログラムでエンドポイントを追加または削除する API | ✔ |
データプレーン トラフィックのエンドポイント
マイクロサービスは、データプレーンを使用して、メッシュ内とメッシュ外のサービスにアクセスします。Cloud Service Mesh を使用すると、アプリケーション ロジックをネットワーキング ロジックから分離できるため、アプリケーションで行う必要があるのは、リクエストをデータプレーン(アプリケーションとともに実行されているサイドカー プロキシなど)に送信することのみです。データプレーンは、適切なエンドポイントにリクエストを送信します。
以下の表で、メッシュ内にあるとして記載されているアプリケーションは、Cloud Service Mesh のマネージド データプレーンを使用して他のサービスと通信するアプリケーションです。これらのアプリケーションは、メッシュ内のサービスのみでなく、メッシュ外のサービスにもトラフィックを送信できます。
機能 | 対応 |
---|---|
メッシュ内の VM ベースのアプリケーション | ✔ |
メッシュ内のコンテナベースのアプリケーション | ✔ |
メッシュ外の VM ベースのアプリケーション | ✔ |
メッシュ外のコンテナベースのアプリケーション | ✔ |
オンプレミスのデータセンターで動作しているアプリケーション | ✔ |
マルチクラウド環境のアプリケーション | ✔ |
データプレーン トポロジ
サービス メッシュ モデルでは、アプリケーションはデータプレーンを使用して通信します。このデータプレーンは、多くの場合、アプリケーションとともにデプロイされたサイドカー プロキシで構成されます。Cloud Service Mesh は柔軟性が高く、サービスのネットワーキングのニーズに適したデータプレーン トポロジをサポートします。
機能 | 対応 |
---|---|
アプリケーションとともに実行されるサイドカー プロキシ | ✔ |
プロキシレス gRPC アプリケーション | ✔ |
メッシュ内の 2 つのアプリケーション間の中間プロキシ | ✔ |
メッシュの境界のエッジプロキシ | ✔ |
複数のリージョンにある GKE クラスタまたは Compute Engine VM にまたがるメッシュ | ✔ |
プログラムによる API ドリブンの構成
すべての構成は、そのまま使用できる状態で REST API とダッシュボードを通じて公開されているため、大規模なチーム間で変更を自動化しプログラムによって変更を管理できます。一部の機能は Google Cloud コンソールでは構成できません。
機能 | 対応 |
---|---|
REST API | ✔ |
Google Cloud Console | ✔ |
Google Cloud CLI | ✔ |
Cloud Deployment Manager | ✔ |
Terraform のサポート | ✔ |
プロキシレス gRPC アプリケーションによる言語サポート
Cloud Service Mesh とともに動作するプロキシレス gRPC アプリケーションは、次のプログラミング言語を使用して作成できます。gRPC のさまざまな実装とバージョンでサポートされているサービス メッシュ機能の一覧については、GitHub をご覧ください。
言語 | 対応 |
---|---|
Java | ✔ |
Go | ✔ |
C++ | ✔ |
Python | ✔ |
Ruby | ✔ |
PHP | ✔ |
ノード | ✔ |
リクエストのプロトコル
アプリケーションは、Cloud Service Mesh で構成されたデータプレーンを使用して通信する際に、次のリクエスト プロトコルを使用できます。
機能 | 対応 |
---|---|
HTTP | ✔ |
HTTPS | ✔ |
HTTP/2 | ✔ |
TCP | ✔ |
gRPC | ✔ |
サービスのセキュリティ
Cloud Service Mesh は、次の構成のサービス セキュリティをサポートしています。
機能 | Envoy | gRPC |
---|---|---|
TLS と GKE Pod | ✔ | ✔ |
mTLS と GKE Pod | ✔ | ✔ |
アクセス制御と認可 | ✔ | ✔ |
ルーティングとトラフィック管理
Cloud Service Mesh は、データプレーンを通過するトラフィックの誘導、分割、形成に使用できる高度なトラフィック管理ポリシーをサポートしています。
一部の高度なトラフィック管理機能は、プロキシレス gRPC サービスには使用できません。また、ターゲット TCP プロキシ リソースで利用できる、高度なトラフィック管理機能はありません。
Cloud Service Mesh が HTTP(S) 以外の TCP トラフィックを処理する場合、次の機能はサポートされません。
機能 | HTTP(S) トラフィックまたは gRPC トラフィックを処理するように構成された Envoy プロキシでのサポート | プロキシレス gRPC のサポート |
---|---|---|
サフィックス / プレフィックス / 完全一致 / 正規表現の一致に基づく HTTP / レイヤ 7 のリクエスト ルーティング: | ||
• ホスト名 | ✔ | ✔ |
• パス | ✔ | ✔ |
• ヘッダー | ✔ | ✔ |
• メソッド | ✔ | なし |
• Cookie | ✔ | ✔ |
• リクエスト パラメータ | ✔ | なし |
フォールト インジェクション | ✔ | ✔ |
構成可能なタイムアウト | ✔ | なし 最大ストリーミング期間をご覧ください。 |
再試行数 | ✔ | ✔ 再試行ごとのタイムアウトを除く |
リダイレクト | ✔ | |
URI の書き換え | ✔ | |
リクエスト/レスポンス ヘッダー変換 | ✔ | |
トラフィック分割 | ✔ | ✔ |
トラフィックのミラーリング | ✔ | |
外れ値検出 | ✔ | ✔ |
サーキット ブレーカー | ✔ | ✔ maxRequests のみ |
最大ストリーミング期間 | ✔ | ✔ |
負荷分散
高度な負荷分散方法とアルゴリズムを構成して、サービス、バックエンド グループ(インスタンス グループまたはネットワーク エンドポイント グループ)、個別のバックエンドまたはエンドポイント レベルで負荷を分散できます。詳細については、バックエンド サービスの概要と高度なロード バランシングの概要をご覧ください。
機能 | HTTP(S)、TCP、gRPC のトラフィックを処理するように構成された Envoy プロキシでのサポート | プロキシレス gRPC のサポート |
---|---|---|
リージョンに基づくバックエンド(インスタンス グループまたはネットワーク エンドポイント グループ)の選択(正常な状態でバックエンド容量のある最も近いリージョンを優先) | ✔ | ✔ |
レートベース(1 秒あたりのリクエスト数)の分散モードを使用したバックエンドの選択 | ✔ HTTP(S) 以外の TCP トラフィックではサポートされていません。 |
✔ |
使用率ベースの負荷分散モードに基づくバックエンドの選択(Compute Engine インスタンス グループの VM のみ) | ✔ | ✔ |
バックエンドあたりの構成可能な最大容量(Compute Engine と GKE のみ) | ✔ | ✔ |
構成可能な負荷分散ポリシーに基づくバックエンドの選択。 各組み込みポリシーの詳細については、 |
|
|
サービスの復元性
Cloud Service Mesh では、サービスの復元性を高める機能がサポートされています。たとえば、Cloud Service Mesh を使用して、Blue/Green デプロイ パターン、カナリアテスト、サーキット ブレーカー(Envoy、gRPC)を実装できます。
機能 | HTTP(S)、TCP、gRPC のトラフィックを処理するように構成された Envoy プロキシでのサポート | プロキシレス gRPC のサポート |
---|---|---|
重み付けに基づくトラフィック分割でのサービスの選択 | ✔ | ✔ |
サーキット ブレーカー | ✔ | ✔ maxRequests のみ |
サービスとバックエンドの容量管理
Cloud Service Mesh は、サービスとバックエンドの容量を考慮し、サービスのバックエンド間でトラフィックの分散を最適化します。Cloud Service Mesh は、Google Cloud インフラストラクチャと統合され、容量データが自動的に収集されます。また、手動で容量を設定して構成することもできます。
機能 | 対応 |
---|---|
マネージド インスタンス グループ(MIG)内の VM インスタンスについて、バックエンドの容量と使用率を CPU に基づき自動的に追跡。 | ✔ |
リクエスト率に基づく MIG とネットワーク エンドポイント グループ(NEG)の VM とコンテナ インスタンスの手動の容量とオーバーライド。 | ✔ |
手動の容量ドレイン。 | ✔ |
フェイルオーバー
エンタープライズのワークロードは通常、サービスの稼働時間を確保するために高可用性のデプロイに依存します。Cloud Service Mesh は、マルチゾーン / マルチリージョンの冗長性を有効にすることで、これらのタイプのデプロイをサポートします。
機能 | 対応 |
---|---|
正常な状態のバックエンド容量を持ち同じリージョン内に存在する別のゾーンへの自動フェイルオーバー。 | ✔ |
正常な状態でバックエンド容量のある最も近いリージョンへの自動フェイルオーバー。 | ✔ |
ヘルスチェック
Cloud Service Mesh は、バックエンドの健全性を判断する一元化されたヘルスチェックをサポートしています。
リファレンス情報については、ヘルスチェックの概要をご覧ください。
機能 | 対応 |
---|---|
gRPC ヘルスチェック | ✔ |
HTTP ヘルスチェック | ✔ |
HTTPS ヘルスチェック | ✔ |
HTTP/2 ヘルスチェック | ✔ |
TCP ヘルスチェック | ✔ |
構成可能なヘルスチェック:
|
✔ |
構成可能なリクエストパス(HTTP、HTTPS、HTTP/2) | ✔ |
構成可能なリクエスト文字列またはパス(TCP または SSL) | ✔ |
構成可能な想定レスポンス文字列 | ✔ |
オブザーバビリティ
オブザーバビリティ ツールは、サービス メッシュの理解に役立つモニタリング、デバッグ、パフォーマンスに関する情報を提供します。次の機能は、デフォルトで提供されているか、データプレーンで構成できます。このオブザーバビリティ データを生成するために、アプリケーション コードで特別な操作を行う必要はありません。
サービスの状態を示すダッシュボードはプロキシレス gRPC サービスで使用できますが、データプレーン ロギングとトレースは構成できません。Cloud Service Mesh では gRPC アプリケーションのロギングとトレースを構成できません。ロギングとトレースは、オープンソース サイトで利用可能なトラブルシューティング セクションまたは gRPC ガイドの手順で有効にできます。たとえば、Opencensus を使用すると、プロキシレス gRPC サービスで指標の収集とトレースを有効にできます。
機能 | プロキシのサポート | プロキシレス gRPC サービスのサポート |
---|---|---|
サービスの正常性を示すダッシュボード | ✔ | ✔ |
データプレーン ロギング | ✔ | ✔ |
データプレーン トレース | ✔ | ✔ |
セッション アフィニティ
多くの場合、クライアントとサーバー間の通信では連続した複数のリクエストが行われます。このような場合は、連続するクライアント リクエストを同じバックエンドまたはサーバーにルーティングすることが有効です。Cloud Service Mesh には、バックエンドが正常な状態で使用可能な容量を保持している限り、特定のクライアントからのリクエストをベスト エフォート方式で同じバックエンドに送信するための構成可能なオプションが用意されています。詳細については、バックエンド サービスの概要をご覧ください。
機能 | HTTP(S) プロキシでのサポート | TCP プロキシでのサポート | プロキシレス gRPC サービスのサポート |
---|---|---|---|
クライアント IP アドレス | ✔ | ✔ | |
HTTP Cookie | ✔ | なし | |
HTTP ヘッダー | ✔ | なし | ✔ |
生成された Cookie(最初のリクエストでクライアント Cookie を設定) | ✔ | なし |
ネットワーク トポロジ
Cloud Service Mesh は一般的な Google Cloud ネットワーク トポロジをサポートしています。
機能 | 対応 |
---|---|
Google Cloud プロジェクトの単一ネットワーク | ✔ |
Google Cloud プロジェクトの複数のメッシュ | ✔ |
Google Cloud プロジェクトの複数のゲートウェイ | ✔ |
共有 VPC(複数の Google Cloud プロジェクト間で共有される単一のネットワーク) | ✔ |
Cloud Service Mesh での共有 VPC のサポートの詳細については、制限事項をご覧ください。
コンプライアンス
Cloud Service Mesh は、次の規格に準拠しています。
コンプライアンス認定 | 対応 |
---|---|
HIPAA | ✔ |
ISO 27001、ISO 27017、ISO 27018 | ✔ |
SOC1、SOC2、SOC3 | ✔ |
PCI DSS | ✔ |
次のステップ
- Cloud Service Mesh の詳細については、Cloud Service Mesh の概要をご覧ください。
- プロキシレス gRPC サービスのユースケースとアーキテクチャ パターンを確認するには、プロキシレス gRPC サービスの概要をご覧ください。