サービスメッシュのLinkerdの最新リリースと将来計画をBuoyantのCEOが解説
クラウドネイティブなシステムに関する最大のカンファレンス、KubeCon+CloudNativeCon EU 2021 Virtualが2021年5月4日から7日の日程でオンラインイベントとして開催され、プレカンファレンスを含め多くのセッションが行われた。特に筆者が興味を持っているメモリーセーフなプログラミング言語Rustに関しては、Cloud Native Rust Dayとして2021年5月3日に10以上のセッションとパネルディスカッション、ワークショップなどが行われ、Rustの盛り上がりを感じさせるミニカンファレンスとなった。
Rustを開発に使ったソフトウェアとして常に名前が挙がるのが、サービスメッシュのLinkerdだ。Linkerdは元TwitterのエンジニアだったWilliam Morgan氏とOliver Gould氏がJavaベースで開発し、その後、バージョン2になった際にデータプレーンのモジュールとして、Rustを使って開発したLinkerd2-proxyを組み込んでいることで知られている。Cloud Native Rust Dayでは「Rust in the Cloud」というパネルディスカッションにモデレータとしてBuoyantのCEOである前述のMorgan氏、パネリストとして同じくBuoyantのCTOであるGould氏が参加し、単なるシステム開発用言語としてのRustではなく、クラウドネイティブなシステムにおけるRustの将来を語り合うという内容となった。
KubeCon EUの中でもCOVID-19に対応するためのシステムにおいて、Linkerdが利用されているユースケースが紹介されるなど、RustやLinkerdに関しては話題が多い1週間となった。
今回はKubeConを終えたBuoyantのCEO、William Morgan氏にインタビューを行い、Linkerdの最新情報や将来計画などを聞いた。
お久しぶりです。前回、サンフランシスコのBuoyantのオフィスでインタビューを行ってからもう2年ほど経ちました。なにか変わりはないですか?
参考:Linkerdを開発するBuoyantがサービスメッシュの始まりと未来を語る
元気にしていますよ。個人的に変わったと言えば、サンフランシスコからテキサスに引っ越しました。それ以外は特に何も変わってはいないかな。先週のKubeCon EUではキーノートでもLinkerdのユースケースが紹介されて、これまでにないほどにLinkerdが注目を集めたカンファレンスになったと思いますね。Rustに特化したプレカンファレンス、Cloud Native Rust Dayも初めて開催されて、Rustにとっては良い日になったと思います。
Linkerdを初めてリリースした2016年から約5年です。バージョン2の一部をRustで書いたものに替えた時は「これは大きな賭けだ」と思ったものですが、今の状況から見れば正しい判断だったと思います。Linkerdを開発しているBuoyantのエンジニアは、非同期通信のためのライブラリーTokioやTower、HyperなどのRustのコミュニティにも貢献していますし、エコシステムとしてリッチになってきていると感じています。
Linkerdについての最新情報を教えてください。
Linkerdについて言えば2.10というバージョンをリリースしました。このリリースのポイントは、ソフトウェアをさらにシンプルにスリムにすることでした。
Linkerd 2.10に関するブログ記事:Linkerd 2.10 and Extensions
これまではデフォルトでインストールされていたPrometheusやGrafanaなどのモジュールを外して、Extensionという形の仕組みに変えました。これによって不必要なモジュールがインストールされることもなくなりました。CNCFのプロジェクトでもあるSMI(Service Mesh Interface)もこの仕組みの中で実装していく予定です。
よりシンプル、スリムにという部分はIstioとはまったく逆のアプローチですね。
そうですね。Istioは多くの機能を取り入れて、より大きく複雑になっていると思います。LinkerdはLess is Moreを実現するために、シンプルに導入したらすぐに動くということを目的にして開発しています。Istioとは逆の方向と言えるでしょうね。
今後の予定としては2021年の末までに2.11をリリースしたいと考えています。このリリースのテーマは運用コストをなるべく減らすことです。サービスメッシュは多くのPodが連携して動くので、実際に運用が始まってみるとその管理や操作が煩雑になります。Linkerdではその運用のためのコストを限りなく少なくしたいと考えています。もうひとつは、ポリシーを取り入れてPod間のセキュアな通信を、mTLSを使って実装することですね。今のLinkerdはPod同士の通信に関しては誰とでも話をしてしまう形になっていますから。
ポリシーを導入してどういう役割だったら何にアクセスができるのか?を実装するのはRBAC(Role Based Access Control)と同じ機能になると思いますが、RBACはこれまで多くのプロジェクトでも語られてきました。それをLinkerdでも実装すると。
そうですね。ポリシーによるセキュアな通信、RBACは前からやりたいとは考えていましたが、それを2.11で実装したいと考えています。
サービスメッシュの運用コストを下げるという意味では、何かトラブルが起こった後に対応するのではなく、予めトラブルを起こしてみてそれがちゃんと復旧するのかを検証するカオスエンジニアリングが有効だと思います。Linkerdの中でカオスエンジニアリングを実装する予定は?
興味深い質問ですね。実際にLinkerdのユースケースとしてカオスエンジニアリングを実装している例はあります。テキサスのH-E-Bというスーパーマーケットチェインでは、Linkerdのサービスメッシュの上にカオスエンジニアリングのツールを入れて実装するというシステムになっています。カオスエンジニアリングとは直接関係ありませんが、Pod間で通信されるメッセージにタグを付けて、そのタグごとに処理を変えるというような機能は、実はLinkerd 1.xの時に実装されていました。しかし、実際には誰もそれを使う人がいなかったので、機能を外したという経緯があります。こういう機能も、2.10であればExtensionという形で追加することができます。カオスエンジニアリングもExtensionという形で実装することで、カオスエンジニアリングのツールを好みで入れ替えるということも可能になります。すべてを本体に取り込むのではなく、後から入れ替えられるようにするというのもLinkerd 2.10であれば可能になっています。
Linkerd 2.10ではExtensionが導入され、機能追加が外部のモジュールから行えるようになったというのは大きなトピックだろう。最初の頃はApplication Proxyという名称で訴求したものの誰も理解してくれなかったが、サービスメッシュと言い方を換えたらユーザーもデベロッパーも理解が速くなったというエピソードをかつて教えてくれたMorgan氏だが、シンプルにスリムにサービスメッシュを実装するという目的に向かって着実に進歩していることを実感するインタビューとなった。
またRustについても、AWSのFirecrackerを始めとする多くのプロジェクトがRustのエコシステムを強化していることを指摘し、非同期通信ライブラリーについてもBuoyantとしても貢献していきたいと力強く語った。さらポリシーについても前回のインタビューでも将来計画として挙げられていた項目となり、いよいよ実装の目途が付いたという形だろうか。「Kubernetesをもっと退屈にする」ためには必要だと語っていたのが印象的だった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon+CloudNativeCon EU 2021、コロナ禍に対抗するシステムを支えるLinkerd
- KubeCon NA 2021からサービスメッシュの2セッションを紹介
- Linkerdを開発するBuoyantがサービスメッシュの始まりと未来を語る
- KubeCon NA 2020、サービスメッシュのLinkerdの概要とユースケースを紹介
- サービスメッシュを実現するLinkerdの将来を、開発元のBuoyantが語る
- サービスメッシュのLinkerd 2.9を紹介。EWMA実装のロードバランサー機能とは
- サービスメッシュのLinkerd、Pod間通信にオーソライゼーションポリシーを実装
- 写真で見る「KubeCon NA 2022」活気が戻ったショーケースを紹介
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介
- KubeCon Europe 2024からサービスメッシュのLinkerdの最新情報を紹介