TL;DR
アプリケーションのコードを変えずに、ゼロトラストのセキュリティや可観測性などの機能を与えるインフラストラクチャ層。マイクロサービスのような分散アーキテクチャで使う。
なぜ必要か
Istio のドキュメントによると、サービスメッシュは分散システムやマイクロサービスのアーキテクチャで開発者や運用者が直面する課題に対処する。通信の暗号化やアクセス制御、トラフィックの観測を、サービスごとに実装せずに済む。
仕組み
Istio はアプリケーションのプロキシを使って、アプリケーションを意識したトラフィック管理ができるようにする。プロキシにはクラウドネイティブなアプリケーション向けのゲートウェイプロキシである Envoy を使う。プロキシは従来のサイドカーとして置くこともできるし、運用を簡単にした ambient モードで動かすこともできる。
主な機能は次のとおりである。
- セキュリティ: mTLS による暗号化、ポリシー管理、アクセス制御
- トラフィック管理: カナリアデプロイ、A/B テスト、負荷分散、障害からの回復
- 可観測性: 全体のトラフィックの観測
例
- Istio
- Traefik のノートでは、サービスメッシュには Envoy が向いており、Traefik は Istio などのサイドカーにはなれないとしている