Istioが新たな仕組み「Ambient Mesh」を発表。サイドカーなしでサービスメッシュを実現

Istioは、サービスメッシュを実現する新たな仕組み「Ambient Mesh」を発表しました

現在のIstioは、各サービス(≒KubenetesのPod)ごとにプロキシを配置し、サービス間のネットワークをプロキシ経由で構成することによってサービスメッシュを構築しています。これによりサービス間の通信のトラフィックコントロール、暗号化、可観測性(オブザーバビリティ)などの機能が実現されるわけです。

この仕組みは、サービスの隣にプロキシを配置することから、「サイドカー」パターンなどと呼ばれています。

新たな仕組み「Ambient Mesh」では、Pod群をホストしているノードにプロキシを配置し、このプロキシによってサービスメッシュの機能を実現します。

Podごとのプロキシ配置が不要になる、つまり「サイドカーレス」(Sidecar-less)なパターンとなることで、デプロイや管理の容易、コンピュータリソースを効率よく利用できることなどが期待できます。

このAmbient Meshの仕組みは、GoogleとSolo.ioが貢献したと説明されています。

https://platform.twitter.com/embed/Tweet.html?dnt=false&embedId=twitter-widget-1&features=eyJ0ZndfdGltZWxpbmVfbGlzdCI6eyJidWNrZXQiOlsibGlua3RyLmVlIiwidHIuZWUiXSwidmVyc2lvbiI6bnVsbH0sInRmd19ob3Jpem9uX3RpbWVsaW5lXzEyMDM0Ijp7ImJ1Y2tldCI6InRyZWF0bWVudCIsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfZWRpdF9iYWNrZW5kIjp7ImJ1Y2tldCI6Im9uIiwidmVyc2lvbiI6bnVsbH0sInRmd19yZWZzcmNfc2Vzc2lvbiI6eyJidWNrZXQiOiJvbiIsInZlcnNpb24iOm51bGx9LCJ0ZndfY2hpbl9waWxsc18xNDc0MSI6eyJidWNrZXQiOiJjb2xvcl9pY29ucyIsInZlcnNpb24iOm51bGx9LCJ0ZndfdHdlZXRfcmVzdWx0X21pZ3JhdGlvbl8xMzk3OSI6eyJidWNrZXQiOiJ0d2VldF9yZXN1bHQiLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3NlbnNpdGl2ZV9tZWRpYV9pbnRlcnN0aXRpYWxfMTM5NjMiOnsiYnVja2V0IjoiaW50ZXJzdGl0aWFsIiwidmVyc2lvbiI6bnVsbH0sInRmd19leHBlcmltZW50c19jb29raWVfZXhwaXJhdGlvbiI6eyJidWNrZXQiOjEyMDk2MDAsInZlcnNpb24iOm51bGx9LCJ0ZndfZHVwbGljYXRlX3NjcmliZXNfdG9fc2V0dGluZ3MiOnsiYnVja2V0Ijoib24iLCJ2ZXJzaW9uIjpudWxsfSwidGZ3X3R3ZWV0X2VkaXRfZnJvbnRlbmQiOnsiYnVja2V0Ijoib2ZmIiwidmVyc2lvbiI6bnVsbH19&frame=false&hideCard=false&hideThread=false&id=1567560830434119681&lang=ja&origin=https%3A%2F%2Fwww.publickey1.jp%2Fblog%2F22%2Fistioambient_mesh.html&sessionId=948f26f7f17b98c7271334fac5ba6bad2383f6fd&siteScreenName=publickey&theme=light&widgetsVersion=1bfeb5c3714e8%3A1661975971032&width=550px

L7のコントロールには引き続きサイドカーパターンを用いる

下記がSolo.ioによるAmbient Meshの説明図です。左が従来のサイドカーパターンで、各サービス(水色の四角)の左に「P」で示されたプロキシが配置され、サービス間の通信はプロキシ経由で行われます。

右がAmbient Meshによるサイドカーレスのパターンです。ノード(灰色の長方形)にプロキシが配置され、サービス間の通信はノード上のプロキシ経由で行われます。

fig

ただしこの図にもあるように、Ambient Meshにおけるノード上のプロキシはL4(≒TCP)の通信に対するプロキシとして働きます。L7(≒HTTP)でのトラフィックコントロールやセキュリティ、オブザーバビリティを実現したい場合には、従来のサイドカーパターンに似た形式でEnvoyベースのWaypointプロキシと呼ばれる仕組みを利用します。

このAmbient Meshは今後数カ月以内に投入される見通しです。

競合するCiliumではサイドカーフリーを実現済み

実は、Istioに先行してサイドカーパターンを用いずにサービスメッシュを実現する仕組みを持つソフトウェアがすでに登場しています。Ciliumです。

Ciliumは、Linuxカーネルの内部をフックして機能を拡張できる「eBPF」と呼ばれる注目の技術を用いてサービスメッシュを実現するソフトウェアとして、その存在感を日増しに高めています。

そして7月にリリースされたCilium 1.12ではサイドカーパターンを用いずにサービスメッシュの構築が可能になりました。ちなみにCiliumではこれを「サイドカーフリー」(Sidecar-free)と呼んでいます。下記の図の左下がそれです。

fig

Ciliumでも高度な機能を利用したい場合にはサイドカーパターンを用いることになっていますが、シンプルなトラフィックコントロールやオブザーバビリティであればサイドカーフリーで簡単に導入できるようになりました。

サイドカーパターンを不要にする仕組みは、そのシンプルさや導入の容易さ、効率の良さなどから、サービスメッシュの分野においてゲームチェンジャーになりそうな可能性を秘めています。

Istioと比べればCiliumは知名度も実績もまだまだと言えますが、Istioはこの仕組みで先行するCiliumを大いに意識して、今回のAmbient Meshの発表を行ったのかもしれません。