はじめに
サービスメッシュSWとしてIstioとLinkerdがあるが、以下の比較資料やLinkerdマニュアルを元に機能比較を行った。
評価軸は以下を参考にさせてもらいました。
機能比較表
機能 | 内容 | Istio | Linkerd | 備考 | |
---|---|---|---|---|---|
対象プロトコル | メッシュ内で扱えるプロトコル | TCP/HTTP1/HTTP2/gRPC | TCP/HTTP1/HTTP2/gRPC | ||
Ingress Gateway | メッシュ外からのトラフィックを受信する機能 | ○ | △ | LinkerdはビルドインのIngress Gatewayを持たず、KubernetesのIngressと協調動作する様に設計されている。 | |
ルーティング | Traffic Spliting | パーセンテージ指定で複数サービスにトラフィックを分散してルーティングする機能 | ○ | ○ | LinkerdはService Mesh Interface(SMI)での実装を拡張機能として取り込む事で実現 |
Traffic Steering | URL,ヘッダ情報等の条件で、トラフィックをルーティングする機能 | ○ | × | ||
Traffic Mirroring | トラフィックを別サービスへミラーリングする機能 | ○ | × | ||
Least requests | 最もリクエスト数が少ない仮想ノードにリクエストを振り分ける機能 | ○ | △ | Linkerdはレスポンスタイムの指数平滑移動平均(EWMA)が最も小さい仮想ノードに振り分ける | |
トラフィック制御 | タイムアウト | 設定値に応じてタイムアウトさせる機能 | ○ | ○ | |
リトライ | 設定値に応じてリトライさせる機能 | ○ | ○ | ||
サーキットブレーカ | 一部サービスが継続的に障害が発生している場合に、そのサービスへのリクエストを遮断する機能 | ○ | × | ||
プロトコル変換 | プロトコルを変換し、コンテナに転送する機能(HTTP⇔gRPC変換等) | ○ | × | ||
URL操作 | パス書き変えやリダイレクト、Header情報付与等を行う機能 | ○ | × | ||
流量制御 | コネクション数制限 | TCP等のコネクション数を制限する機能 | ○ | × | |
リクエスト数制限 | 1コネクション当りのリクエスト数を制限する機能 | ○ | × | ||
RateLimit | 単位時間当りのリクエスト数を制限する機能 | ○ | × | ||
セキュリティ | 通信暗号化 | メッシュ内の通信を暗号化する機能 | ○ | ○ | |
認証・認可 | サービス呼び出しの認証・認可を制御する機能 | ○ | × | ||
テレメトリ | 通信ログ・メトリクス収集 | トラフィックのログやメトリクス情報を収集し、各種監視システムへ転送する機能 | ○ | ○ | |
分散トレーシング | トラフィックのトレース情報を各種監視システムへ転送し、トレーシング情報を可視化する機能 | ○ | ○ | ||
外接制御 | 外接通信制御 | 外接向けのリクエストを制限したり、トラフィックを制御する機能 | ○ | × | |
クロスメッシュ | 複数クラスタに跨ってメッシュを適用する機能 | ○ | ○ | ||
その他 | Fault Injection | ネットワーク層の障害を注入する機能(ネットワーク層のカオスエンジニアリング) | ○ | ○ | |
GUI操作 | GUIベースでのメッシュの設定投入や設定内容を可視化する機能 | ×※アドオン導入で可能 | × |
おわりに
Linkerdはシンプル、軽量が特徴のサービスメッシュ製品であるため、機能面ではIstioに劣る印象。
内容に誤り等あればご指摘頂けると助かります!