Cloud Service Mesh の概要
Cloud Service Mesh は、Google Cloud およびサポートされている GKE Enterprise プラットフォームで利用可能なサービス メッシュです。さまざまなコンピューティング インフラストラクチャで実行されているサービスをサポートします。Cloud Service Mesh は、Google Cloud、オープンソース、またはその両方向けに設計された API によって制御されます。
このドキュメントは、Cloud Service Mesh の新規のお客様、または引き続き Anthos Service Mesh または Traffic Director をご利用のお客様を対象としています。
サービス メッシュとは
サービス メッシュは、サービス間の通信を管理され、監視可能で、安全なものにするアーキテクチャです。これにより、選択したインフラストラクチャ上で多くのマイクロサービスで構成される堅牢なエンタープライズ アプリケーションを簡単に作成できるようになります。サービス メッシュでは、モニタリング、ネットワーキング、セキュリティなどのサービスの実行についての共通の懸念を整合性のある強力なツールで分析するため、サービス デベロッパーやオペレーターはユーザー向けの優れたアプリケーションの作成と管理に専念できます。
アーキテクチャ上、サービス メッシュは 1 つ以上のコントロール プレーンとデータプレーンで構成されます。サービス メッシュは、サービス内外のすべてのトラフィックをモニタリングします。Kubernetes では、プロキシはメッシュのマイクロサービスにサイドカー パターンによってデプロイされます。Compute Engine では、VM にプロキシをデプロイするか、データプレーンにプロキシレス gRPC を使用できます。
このパターンにより、アプリケーション ロジックまたはビジネス ロジックがネットワーク機能から切り離されるため、デベロッパーはビジネスに必要な機能に集中できます。また、サービス メッシュを使用すると、運用チームと開発チームはお互いの作業を分離できます。
アプリケーションをマイクロサービスとして設計することには、多くのメリットがあります。ただし、ワークロードが増大すると、複雑で断片的になる可能性があります。サービス メッシュを使用すると、断片化の問題を解決して、マイクロサービスの管理が容易になります。
Cloud Service Mesh とは
Cloud Service Mesh は、Google Cloud とサポートされている GKE Enterprise 環境の両方に対応する Google のソリューションです。
- Google Cloud の場合: Cloud Service Mesh には、ワークロードが実行されるコンピューティング インフラストラクチャに固有の API が用意されています。
- Compute Engine ワークロードの場合、Cloud Service Mesh では Google Cloud 固有のサービス ルーティング API を使用します。
- Google Kubernetes Engine(GKE)ワークロードの場合、Cloud Service Mesh はオープンソースの Istio API を使用します。
- Google Cloud 以外: Distributed Cloud または GKE マルチクラウドでは、Cloud Service Mesh は Kubernetes ワークロード用の Istio API をサポートします。
Google Cloud の内部や外部に関わらず、Cloud Service Mesh を使用すると、アプリケーション コードを変更することなく、サービスの管理、モニタリング、保護を行うことができます。
Cloud Service Mesh により、トラフィック管理やメッシュ テレメトリ、サービス間の通信保護に至るまで、サービス提供をシンプルにすることで、運用チームや開発チームの労力を軽減できます。Google のフルマネージド サービス メッシュを使用すると、マイクロサービス アーキテクチャの複雑な環境を管理し、マイクロサービスのあらゆるメリットを享受できます。
機能
Cloud Service Mesh には、トラフィック管理、オブザーバビリティとテレメトリー、セキュリティのための一連の機能があります。
トラフィック管理
Cloud Service Mesh は、メッシュ内のサービス間、メッシュ(内向き、上り)、外部サービス(外向き、下り)へのトラフィック フローを制御します。このトラフィックがアプリケーション(L7)レイヤで管理されるように、リソースを構成してデプロイします。たとえば、次のことを行います。
- サービス ディスカバリを使用します。
- サービス間のロード バランシングを構成します。
- カナリア デプロイと Blue/Green デプロイを作成します。
- サービスのルーティングを細かく制御します。
- サーキット ブレーカーを設定します。
Cloud Service Mesh では、メッシュ内のすべてのサービスのリストを名前別およびエンドポイント別に管理します。このリストを維持して、トラフィック フロー(Kubernetes Pod の IP アドレスや、マネージド インスタンス グループ内の Compute Engine VM の IP アドレスなど)を管理します。メッシュは、このサービス レジストリを使用してサービスと同時にプロキシを実行することで、適切なエンドポイントにトラフィックを転送します。プロキシレス gRPC ワークロードは、Envoy プロキシを使用するワークロードと並行して使用することもできます。
オブザーバビリティの分析情報
Google Cloud コンソールの Cloud Service Mesh ユーザー インターフェースには、サービス メッシュに関する分析情報が表示されます。これらの指標は、Istio API を通じて、構成されたワークロードに対して自動的に生成されます。
- メッシュの GKE クラスタ内の HTTP トラフィックに関するサービスの指標とログが、Google Cloud に自動的に取り込まれます。
- 事前構成されたサービス ダッシュボードに、サービスを理解するために必要な情報が表示されます。
- 高度なテレメトリー(Cloud Monitoring、Cloud Logging、Cloud Trace によって実現)では、サービスの指標とログを深く掘り下げることができます。さまざまな属性でデータをフィルタ、セグメント化できます。
- サービス同士の関係により、サービス間の依存関係や各サービスに接続しているユーザーを一目で把握できます。
- 自分のサービスだけでなく、他のサービスとの関係のコミュニケーション セキュリティの分析情報もすばやく確認できます。
- サービスレベル目標(SLO)により、サービスの状態についての分析情報を取得できます。サービスの状態に関する独自の基準を使用して SLO とアラートを定義できます。
Cloud Service Mesh のオブザーバビリティの詳細については、オブザーバビリティ ガイドをご覧ください。
セキュリティ上のメリット
Cloud Service Mesh には多くのセキュリティ上のメリットがあります。
- 盗まれた認証情報によるリプレイまたはなりすまし攻撃のリスクを軽減する。 Cloud Service Mesh では、JSON Web Token(JWT)などの署名なしトークンではなく、相互 TLS 証明書(mTLS)を使用してピアを認証します。
- 通信中の暗号化を保証する。認証に mTLS を使用すると、すべての TCP 通信が通信中に暗号化されます。
- クライアントのネットワークのロケーションやアプリケーション レベルの認証情報にかかわらず、承認されていないクライアントが機密データを含むサービスにアクセスするリスクを軽減する。
- 本番環境ネットワーク内でユーザーデータ侵害のリスクを軽減する。 インサイダーが機密データにアクセスするときには、必ず承認されたクライアントを使用するようにします。
- 機密データのあるサービスにアクセスしたクライアントを識別する。 Cloud Service Mesh のアクセス ロギングを使用すると、IP アドレスだけでなく、クライアントの mTLS ID も収集できます。
- クラスタ内コントロール プレーンのすべてのコンポーネントは、FIPS 140-2 認証取得済みの暗号化モジュールを使用して構築されています。
サービス メッシュのセキュリティ上のメリットと機能の詳細は、セキュリティ ガイドをご覧ください。
デプロイのオプション
Cloud Service Mesh では、次のデプロイ オプションがあります。
- Google Cloud
- Managed Cloud Service Mesh - GKE 用のマネージド コントロール プレーンとデータプレーン(推奨)
- マネージド Cloud Service Mesh - VM を搭載した Compute Engine 用のマネージド コントロール プレーンとデータプレーン(推奨)
- Istio API を使用した GKE のクラスタ内コントロール プレーン(非推奨)
- Google Cloud
- Istio API を使用した Kubernetes のクラスタ内コントロール プレーン
マネージド Cloud Service Mesh
マネージド Cloud Service Mesh は、すべてのインフラストラクチャ用のマネージド コントロール プレーンと GKE 用のマネージド データプレーンで構成されます。マネージド Cloud Service Mesh では Google がアップグレード、スケーリング、セキュリティに関する作業を行い、ユーザー側の手動メンテナンスの必要性は最小限に抑えられます。これは、コントロール プレーン、データプレーン、関連リソースを対象にします。
データプレーンの実装
Google Cloud APIs を使用する場合、データプレーンは Envoy プロキシまたはプロキシレス gRPC アプリケーションによって提供されます。既存のアプリケーションを更新する場合、サイドカーベースのアプローチでは、アプリケーションを変更することなく、メッシュに統合できます。サイドカーを実行するオーバーヘッドを回避したい場合は、gRPC を使用するようにアプリケーションを更新します。
Envoy プロキシとプロキシレス gRPC はどちらも、xDS API を使用してコントロール プレーンに接続します。プロキシレス gRPC を使用する場合は、Go、C++、Java、Python などのアプリケーションでサポートされている言語から選択できます。
オープンソースの Istio API を使用する場合、データプレーンは Envoy プロキシによって提供されます。
コントロール プレーンの実装
Cloud Service Mesh コントロール プレーンは、構成が Google Cloud のオンまたはオフか、新規ユーザーかどうかによって異なります。
既存ユーザーのためのコントロール プレーンの実装
- Google Cloud 外の構成の場合は、Cloud Service Mesh のクラスタ内、非マネージド コントロール プレーンを使用しています。詳細については、クラスタ内コントロール プレーンでサポートされている機能をご覧ください。
- Google Cloud の Anthos Service Mesh ユーザーである場合は、Istio API を使用しています。詳細については、Istio API を使用したサポートされている機能(マネージド コントロール プレーン)をご覧ください。
- Cloud Service Mesh のユーザーは、Google Cloud APIs で Cloud Service Mesh のマネージド コントロール プレーンを使用しています。詳細については、Google Cloud APIs でサポートされている機能を使用した Cloud Service Mesh をご覧ください。
現在のコントロール プレーンを確認するには、コントロール プレーンの実装を特定するをご覧ください。コントロール プレーンとコントロール プレーンの移行の詳細については、継続のお客様向けのマネージド コントロール プレーンの概要をご覧ください。
新規ユーザー向けのコントロール プレーンの実装
- Google Cloud 外の構成を計画している場合は、Cloud Service Mesh のクラスタ内非マネージド コントロール プレーンを選択します。詳細については、クラスタ内コントロール プレーンでサポートされている機能をご覧ください。
- Kubernetes で Google Cloud 上の構成を計画している場合、Istio API を選択しますが、コントロール プレーンは Traffic Director の実装を使用します。ただし、コントロール プレーンの実装を決定する要因で説明されている特定のケースを除きます。詳細については、Istio API(マネージド コントロール プレーン)を使用してサポートされる機能をご覧ください。
- Compute Engine VM で Google Cloud 上の構成を計画している場合、コントロール プレーンはグローバルのマルチテナント コントロール プレーン(Traffic Director の実装)を使用します。詳細については、Google Cloud APIs でサポートされている機能を使用した Cloud Service Mesh をご覧ください。
コントロール プレーンの移行
Anthos Service Mesh のお客様が引き続き Istio API を使用している場合は、クラスタが Traffic Director コントロール プレーンへの移行を開始します。構成には引き続き Istio API を使用できます。
クラスタが Istio コントロール プレーンをまだ使用しているのか、新しいグローバル コントロール プレーンに移行したのかを判断するには、コントロール プレーンの実装を特定するをご覧ください。
次のステップ
- 引き続きご利用の場合は、継続中の顧客向けの管理対象コントロール プレーンをご覧ください。
- GKE で設定する場合は、コントロール プレーンのプロビジョニングをご覧ください。
- Compute Engine と VM の設定を行う場合は、Envoy とプロキシレス ワークロードでサービス ルーティング API を設定する準備をするをご覧ください。