マイクロサービスの課題
- 近年、マイクロサービスが大流行しているがネットワークに関係する課題がある
- トラッフィク管理、可観測性、セキュリティの3つ
ネットワークに由来する課題解決のための機能
マイクロサービスシステムの運用には、分散システムのネットワークに由来する課題が存在しており、その解決のための様々な機能の実装が必要となる。
各種ライブラリを用いて、これらを実装して問題解決することも可能であるが、多くのマイクロサービスを抱える場合、統一的な問題解決をするのが難しくなってくる。
サービスメッシュが解決する課題
すべてのマイクロサービス間の通信に対して、一貫した仕組み(サーキットブレーカー、ログ、メトリクス、認証認可など)を提供するのがサービスメッシュ。
Istioの概要
Data Plane
- マイクロサービス間のすべてのネットワーク通信を仲介・制御する
- すべてのPodにEnvoyをサイドカープロキシとして配備する
- アプリケーションは、IstioやEnvoy Proxyのための設定が不要となり、ビジネスロジックの実装に集中できるようになる
- マイクロサービス間の通信の観測結果を収集し、レポートする
Control Plane
- Data Planeを管理する
- istio-initによって、Kubernetesクラスター内のすべてにEnvoy Proxyを注入する
- RouteRuleなどの設定を常に最新に保つように、Reconciliation Loopを実行する
- 可観測性の向上のためにログ集約するなどを行う
Istiod
- サービス検出・構成・証明書管理を行う
- 構成要素
サービスメッシュの本質
- サービスメッシュの解決課題は、トラフィック管理、可観測性、セキュリティではない
- インフラのコード化を実現したのがKubernetesこれをネットワークの世界に適用したのがサービスメッシュツールであるIstio
サービスメッシュの仕組み
- サービスメッシュはアプリのサイドカーなので、拡張が可能
- IstioのProxyとしてのEnvoyは、Envoyフィルタを利用して拡張を行う
- Envoyフィルタは、Envoyコア機能に影響を与えずにカスタム機能を定義する
- envoy.yamlによって追加機能をコード化することでIaCを実現可能