クラウドネイティブで行こう
[IT研修]注目キーワード
Python
UiPath(RPA)
最新技術動向
Microsoft Azure
Docker
Kubernetes
第6回 サービスメッシュとは
(宮崎悟)
2023年1月
前回は、マイクロサービスの概要について説明しました。今回は、マイクロサービスでよく使用される、サービスメッシュについて説明します。
サービスメッシュとは
サービスメッシュは、インフラストラクチャ層において、通信トラフィックの制御や可観測性を向上させる機能の1つです。
マイクロサービスでは、アプリケーションの集まりをサービスとして扱い、複数のサービス間をAPIで接続して1つの全体のサービスとして提供します。マイクロサービスをKubernetesで実装する場合、アプリケーションがPod、Podの管理するワークロード、ワークロードのネットワークを管理するサービスと、それぞれ呼称します。この管理は、Kubernetesのコントロールプレーンで制御します。
下記は、Kubernetes でのAPI処理フローになります。Ingress サービスは、Kubernetes外部からの通信を受け取るサービスです。各サービスへのAPIは、自動的にワークロード配下のPodへランダムに割り振ります。

サービスメッシュでは、各PodにProxyの役割をするコンテナ(下記図のP)を埋め込みます。サービスメッシュコントローラは、このProxyを経由してPod間の通信制御を行います。結果として、Pod間通信のトラフィックが監視可能になります。

Istioとは
Kubernetesでサービスメッシュを実現するために使用されるソフトウェアの、代表的なものが Istio です。
Istioは、アプリケーション ネットワーク機能を柔軟かつ簡単に自動化する、サービス ネットワーキング を構築します。Kubernetesと従来のワークロードの両方で動作するIstioは、以下のコンポーネントで構成されます。
- Envoy
すべてのネットワークトラフィクを管理するプロキシサーバです。KubernetesのPod内に含む形でデプロイされます。
- Pilot
サービスディスカバリとトラフィック管理します。
- Mixer
Envoyを通じて、各サービスのデータを収集し、その情報を元にしてアクセスコントロールを行います。
- Istio-Auth
Kubernetes のService Accountを使用したユーザ認証と、サービス間のTLS相互認証を提供します。
Pilot、Mixer、Istio-Auth は、Istioのコントロールプレーンと呼ばれます。
Envoyは、以下の機能を持ちます。
- L3/L4/L7 フィルタアーキテクチャ
Envoyは、L3/L4ネットワークプロキシの役割を持ちます。また、L7 のプロキシとして、HTTP L7フィルタをサポートしています。
- HTTP/2、HTTP/3対応
Envoyは、HTTP/1.1、HTTP/2に対応し、最新のバージョンではHTTP/3に対応しています。
- HTTP L7 ルーティング
Envoyは、フロント/エッジプロキシとして使用可能で、パス、権限、コンテンツタイプ、ランタイム値などに基づいてリクエストをルーティングします。この機能はサービス間のメッシュを構築する際にも活用されます。
- gRPC サポート
Envoyは、HTTP/2の機能をすべてサポートし、gRPCのリクエストとレスポンスのルーティングとロードバランシングの基盤として使用できます。
- サービスディスカバリ、動的設定、ヘルスチェック
Envoyは、集中管理のための動的設定APIのレイヤーセットを使用でき、ホスト、バックエンドクラスタ自体、HTTPルーティング、リスニングソケット、暗号に関する動的な更新をEnvoyに提供します。また、アクティブなヘルスチェックを実行できるヘルスチェックサブシステムを含みます。
- 高度なロードバランス
Envoy はライブラリではなく自己完結型のプロキシなので、高度なロードバランシング技術を一箇所に実装し、どのアプリケーションからもアクセス可能です。
- フロント/エッジプロキシ対応
エッジで同じソフトウェアを使うことには大きなメリット(観測性、管理性、同一のサービスディスカバリ、ロードバランシングアルゴリズムなど)があります。Envoyは、最新のWebアプリケーションに対応したエッジプロキシとして動作します。
- オブザーバビリティ
Envoy の第一の目標はネットワークを透過的にすることです。しかし、問題はネットワークレベルとアプリケーションレベルの両方で発生します。Envoy は、すべてのサブシステムに対して強固な統計サポートを提供しています。
終わりに
今回は、サービスメッシュとサービスメッシュの実装としてIsioについて説明しました。サービスメッシュを実装するアプリケーションは他にもありますが、Istio を使用することが多くなっています。
次回は、イミュータブルインフラストラクチャに付いて説明します。次回をお楽しみに。

CTC教育サービス 関連コース
[IT研修]注目キーワード
Python
UiPath(RPA)
最新技術動向
Microsoft Azure
Docker
Kubernetes
「クラウドネイティブで行こう」コラム一覧へ
コラム一覧へ