KubeCon NA 2020、サービスメッシュのLinkerdの概要とユースケースを紹介
今回は、KubeCon+CloudNativeCon NA 2020からLinkerdの概要とユースケースのセッションを紹介する。概要についてはLinkerdの開発をリードするBuoyantのCEOであるWilliam Morgan氏とエンジニアのTarun Pothulapati氏が解説したセッションから、ユースケースについてはテキサスのスーパーマーケットH-E-Bのマイクロサービスを紹介するセッションからの引用となる。
Linkerdの概要:Overview and State of Linkerd - William Morgan & Tarun Pothulapati
H-E-Bの事例:How H-E-B Curbside Adopted Linkerd During a Pandemic - Justin Turner & Garrett Griffin, H-E-B
Linkerdについて
Morgan氏はLinkerdの概要として、すでに本番環境での実装が4年前から行われていることなどを紹介したが、ポイントは「超軽量、超高速、セキュリティを最優先にしたKubernetesに特化したサービスメッシュ」であるという部分だろう。
そして次のスライドでは「No Developer Involvement」として、開発者がLinkerdを直接触らなくてもサービスメッシュが実装できるという特徴を紹介した。これはKubernetesが開発者にとって非常に難しいソフトウェアであるという認識の裏返しとも言えるものだろう。MicrosoftなどがAppDev、AppOps、InfraOpsと開発と運用の間に新しいアプリケーションオペレーターという役割を導入していることと合わせて考えると、開発者にとってクラウドネイティブがいかに難しい発想なのかを表していると言える。
Linkerdのデザインについて解説した次のスライドでは、YAMLファイルなどで設定をしなくても良いこと、資源を使わずに高速であること、などを紹介した。ここではコントロールプレーンがGoで、データプレーンがRustで書かれていることも紹介された。
これについては、より詳細に解説されているBuoyantのブログを参照されたい。これは「LinkerdがEnvoyを使わない理由」ことを解説している。「IBMやRed Hatなどが強力にプッシュするサービスメッシュであるIstioで利用されているProxyのEnvoyを、なぜLinkerdが採用していないのか?」を解説する中で、データプレーンとして同じ働きをするLinkerd2-proxyがEnvoyに比べて、非常に小さく高速であることを示している。
Buoyantのブログは以下から参照されたい。
参考:Why Linkerd doesn't use Envoy
Linkerdのアーキテクチャーについて解説したのが次のスライドだ。ここではコントロールプレーンとデータプレーンに分離されていること、そしてサイドカーとしてKubernetesのPodにインジェクトされるモジュールがLinkerd2-proxyであることが解説されている。
ここでLinkerd2と明記されているのは、Linkerdの最初のバージョンはJavaベースで開発されており、それをKubernetesに特化する形でデータプレーンをRustで書き直して置き換えたのがLinkerd2だからだ。当初はLinkerdとConduitという別プロジェクトだったものをマージして、シンプルにブランディングし直したのが今のLinkerdである。この辺りの経緯は2018年のインタビュー記事を参考にして欲しい。
参考:サービスメッシュを実現するLinkerdの将来を、開発元のBuoyantが語る
Linkerd2-proxyについて解説したのが次のスライドである。ここでもEnvoyではないということが繰り返されており、Morgan氏がEnvoyとの比較を何度も訊かれているであろうことが想像できる。
Istioとの性能比較について解説したMorgan氏は「何もサービスメッシュを使わない場合よりは遅いが、Istioと比べたら圧倒的に小さくて高速」であることを強調した。
ここで紹介されたIstioとのベンチマークテストについては、以下のリンクを参照されたい。
Kinvolkによるベンチマークレポート:Performance Benchmark Analysis of Istio and Linkerd
性能以外の比較についても解説し、「IBMが勧めるソフトウェアを使ってクビになった人いない」とソフトウェアそのものの比較ではなく、IBMやRed HatというメジャーなITベンダーが推奨していることがIstioの強みであることを、ジョークを交えて紹介した。
最新版Linkerd 2.8.1
この後はプレゼンをPothulapati氏に交代して、最新のバージョンLinkerd 2.8.1の解説に移った。
ここでのポイントは、マルチクラスターへの対応だろう。リスクを分散するために複数のデータセンターやパブリッククラウドを使い分けたいというニーズに対応するために、複数のクラスターにまたがってサービスメッシュを構成したい場合には有効な機能だ。
ここではLinkerdの将来のバージョンである2.9において、TCPにおけるmTLS、ARM64プロセッサのサポート、Kubernetes 1.17で登場したサービストポロジーへの対応などが紹介された。
さらに2.10の計画も紹介し、マルチクラスターでのTCPサポートなどを紹介した。ここで「Server-Speaks-Firstプロトコル」とあるのは、Linkerd2におけるプロトコルを検出し識別する機能に関連する内容だ。すでに公式ドキュメントにも記述があるので、参考にして欲しい。
プロトコルの検出に関するドキュメント:TCP Proxying and Protocol Detection
コロナ禍に対応するためにLinkerdを採用したH-E-Bの事例
次にテキサスのスーパーマーケット、H-E-Bのユースケースについて紹介したい。
H-E-Bは1905年に創業されたプライベート企業で、テキサスとメキシコに340箇所の店舗を持つ。同社がCOVID-19のパンデミックに際して、モバイル向けの新システムを、計画していたモノリシックなものからサービスメッシュを使ったものに移行させた際の経験を解説したのがこのセッションとなる。
H-E-Bの事例:How H-E-B Curbside Adopted Linkerd During a Pandemic - Justin Turner & Garrett Griffin, H-E-B
これはパンデミックの際に顧客が店舗で食品などを購入するのではなく、品物をモバイルからオーダーして店舗で受け取る、または配達してもらうという新サービス、Curbsideの開発にまつわる内容だ。
混雑する店舗の中に入らなくても買い物ができて自分の車に積んでもらえるというのは、コロナ禍における小売店の対応としては良くできていると言える。
元はFASTというサービスを開発していたが、パンデミックに伴いそれをサービスメッシュに移行したというのが実情だ。興味深いのは、サービスメッシュと同時にカオスエンジニアリングを採用して、意図的にシステムを壊しても元の状態に復元させる柔軟性を採用したことだろう。
ここでLinkerdによるサービスメッシュと、Gremlinによるカオスエンジニアリングが採用されたことが紹介されている。
サービスメッシュの採用については、複数のソフトウェアを評価した上でLinkerdを選択したことが解説された。
PoC(Proof of Concept)では「非常にドキュメントが良くできていること」「導入が容易であったこと、疑いたくなるぐらいに簡単であった」ことなどが紹介された。「疑いたくなるぐらい(Suspiciously)」という形容詞はIT業界ではなかなか見ないものだが、それぐらいLinkerdの導入が簡単だったことを表している。
そしてBuoyantのサポートが良かったこと、Slackでのコミュニティの支援が素晴らしかったことなどを紹介した。
カオスエンジニアリングによるゲームディ(意図的にシステムを壊すテストの実施日をGremlinではゲームディと称している)も行われ、Linkerdに対するテストも実施されたことが解説された。
H-E-Bはパンデミックに対応するために、従前のモノリシックなシステムにクラウドネイティブなサービスメッシュとカオスエンジニアリングを導入した形になった。この事例は、導入が簡単ですぐに稼働できるというLinkerdの良さが実感させる内容となった。
最後に、筆者が2019年にサンフランシスコのBuoyant本社に訪問した際のインタビューも参考にされたい。
2019年のインタビュー:Linkerdを開発するBuoyantがサービスメッシュの始まりと未来を語る
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- サービスメッシュのLinkerdの最新リリースと将来計画をBuoyantのCEOが解説
- KubeCon+CloudNativeCon EU 2021、コロナ禍に対抗するシステムを支えるLinkerd
- サービスメッシュのLinkerd 2.9を紹介。EWMA実装のロードバランサー機能とは
- KubeCon NA 2021からサービスメッシュの2セッションを紹介
- サービスメッシュを実現するLinkerdの将来を、開発元のBuoyantが語る
- All Things OpenからSolo.ioのBrian Gracely氏にインタビュー。サイドカーレスサービスメッシュとは?
- Linkerdを開発するBuoyantがサービスメッシュの始まりと未来を語る
- 写真で見る「KubeCon NA 2022」活気が戻ったショーケースを紹介
- KubeCon EU 2022のショーケースからみるKubeConの変化とは
- KubeCon Europe 2023から、Linkerdの最新情報とeBPFがサービスメッシュに使えない理由を解説したセッションを紹介