Cloud Service Mesh について
Cloud Service Mesh は、オンプレミスまたは Google Cloudで信頼性の高いサービス メッシュをモニタリングし、管理するのに便利な一連のツールです。
サービス メッシュとは
サービス メッシュは、サービス間で管理され、監視可能で安全な通信を実現するアーキテクチャです。これにより、選択したインフラストラクチャ上に多くのマイクロサービスで構成される堅牢なエンタープライズ アプリケーションを作成できます。サービス メッシュでは、モニタリング、ネットワーキング、セキュリティなどのサービスの実行についての共通の懸念を整合性のある強力なツールで分析するため、サービス デベロッパーやオペレーターはユーザー向けのアプリケーションの開発と管理に専念しやすくなります。
Cloud Service Mesh は、業界のベスト プラクティスを実現するツールと機能を備えた、柔軟性が高く強力なオープンソースのサービス メッシュ プラットフォームである Istio を基盤としています。Cloud Service Mesh は、均一なレイヤとしてインフラストラクチャ全体にデプロイされます。サービス デベロッパーとオペレーターは、アプリケーションのコードを変更することなく、さまざまな機能セットを使用できます。
アーキテクチャ上、サービス メッシュは 1 つ以上のコントロール プレーンとデータプレーンで構成されます。サービス メッシュはプロキシ経由ですべてのトラフィックをモニタリングします。Kubernetes では、プロキシはメッシュ内のマイクロサービスにサイドカー パターンによってデプロイされます。このパターンにより、アプリケーション ロジックまたはビジネス ロジックがネットワーク機能から切り離されるため、デベロッパーはビジネスに必要な機能に集中できます。また、サービス メッシュを使用することで、運用チームと開発チームが互いの業務を切り離して進められます。
Cloud Service Mesh を使用するメリット
Cloud Service Mesh を使用することで、GKE Enterprise によるテストが完了しサポートされている Istio のディストリビューションを入手して、 Google Cloud 上の GKE やその他のプラットフォーム上の GKE にサービス メッシュを作成してデプロイできます。その際、Google によるフルサポートをご利用いただけます。
機能
Cloud Service Mesh には、安全で信頼性の高いサービスを統合的に監視、管理するための機能やツールが揃っています。
トラフィック管理
Cloud Service Mesh は、サービス間のトラフィック、メッシュ内へのトラフィック(内向き)、外部サービスへのトラフィック(外向き)のフローを制御します。このトラフィックをアプリケーション(L7)レイヤで管理するために、Istio 互換のカスタム リソースを構成してデプロイします。たとえば、カスタム リソースを使うことで次のことを行えます。
- カナリア デプロイと Blue/Green デプロイを作成する。
- サービスの特定のルートをきめ細かく管理する。
- サービス間の負荷分散を構成する。
- サーキット ブレーカーを設定する。
Cloud Service Mesh では、メッシュ内のすべてのサービスのサービス レジストリが名前別およびエンドポイント別に管理されます。トラフィック フロー(Kubernetes Pod の IP アドレスなど)を管理するためのレジストリが保持されています。メッシュは、このサービス レジストリを使用してサービスと同時にプロキシを実行することで、適切なエンドポイントにトラフィックを転送します。
オブザーバビリティの分析情報
Google Cloud コンソールの [Cloud Service Mesh] ページでは、次のようなサービス メッシュに関する情報を確認できます。
メッシュの GKE クラスタ内の HTTP トラフィックに関するサービスの指標とログが、 Google Cloudに自動的に取り込まれます。
事前構成されたサービス ダッシュボードで、サービスの理解に必要な情報を確認できます。
高度なテレメトリー(Cloud Monitoring、Cloud Logging、Cloud Trace によって実現)では、サービスの指標とログを深く掘り下げることができます。さまざまな属性でデータをフィルタ、スライスできます。
サービス同士の関係を一目で把握できるため、各サービスに接続しているユーザーと、各サービスが依存しているサービスを理解するうえで有用です。
自分のサービスだけでなく、他のサービスとの関係のコミュニケーション セキュリティの分析情報もすばやく確認できます。
サービスレベル目標(SLO)により、サービスの状態についての分析情報を取得できます。サービスの健全性に関する独自の基準に基づいて、SLO とアラートを簡単に定義できます。
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 のセキュリティ上の利点や機能について詳しくは、セキュリティ ガイドをご覧ください。
デプロイのオプション
Cloud Service Mesh には次のデプロイ オプションがあります。
- マネージド Cloud Service Mesh
- クラスタ内コントロール プレーン
マネージド Anthos Service Mesh
マネージド Cloud Service Mesh は、マネージド コントロール プレーンとマネージド データプレーンで構成されます。マネージド Cloud Service Mesh を利用すると、Google がアップグレード、スケーリング、セキュリティを代行するため、ユーザーによる手動の保守作業を最小限に抑えられます。マネージド データプレーンを有効にすると、サイドカー プロキシを管理するクラスタ内コントローラが Google によってインストールされます。
次の図は、マネージド Cloud Service Mesh 用の Cloud Service Mesh のコンポーネントと機能を示したものです。
マネージド Cloud Service Mesh の設定またはマネージド Cloud Service Mesh への移行については、マネージド Cloud Service Mesh をプロビジョニングするをご覧ください。
クラスタ内コントロール プレーン
次の図は、クラスタ内コントロール プレーンとサイドカー プロキシ用の Cloud Service Mesh のコンポーネントと機能を示したものです。
クラスタ内 Cloud Service Mesh のインストールについては、Cloud Service Mesh をインストールするをご覧ください。