KubeCon NA 2021からサービスメッシュの2セッションを紹介
KubeCon/CloudNativeCon NA 2021から、サービスメッシュに関連したセッションを2つ紹介する。1つ目はLinkerdの最新情報を紹介するセッション、2つ目はインドネシアの電子決済システムであるGoPayのエンジニアが紹介するKubernetes上でIstioを導入したユースケースのセッションだ。
動画:Overiew and State of Linkerd
Migrating to Service Mesh at Scale to Support Billions of Transaction
Linkerdのセッションは、Linkerdの開発元であるBuoyantのCTOであるOliver Gould氏が行ったもので、Linkerdの概要と最新情報を紹介する内容となっている。
GoPayのセッションは、Kubernetesにシステムを移行した後に自社製のProxyが技術的負債になってしまうという危機感から、オープンソースのサービスメッシュ(この場合はIstio)に移行した際の苦労話を紹介するものだ。
Linkerdの最新情報
Linkerdは今回のキーノートセッションでもGraduationしたことが紹介されたように、早い段階でCNCFにホストされたプロジェクトで、約5年という時間を経て卒業したことになる。
Linkerdの概略を紹介するこのスライドでは、多くのユーザー企業を抱えることのアピールに加えて、2017年にバージョン2がリリースされたことを記載している。これは、メモリーセーフなプログラミング言語であるRustを使ったサイドカープロキシー(データプレーン)を導入したことを意味している。BuoyantはRustコミュニティにも多くの貢献を行っており、非同期ライブラリーの開発を行っていることでも知られている。
LinkerdはKubernetesに特化することでシンプルな使い勝手を追及しており、ウルトラライト、ウルトラファースト、つまり超軽量、超高速なソフトウェアとして実装されている。
超軽量であることは次のスライドでも紹介されているが、何よりもKubernetesに特化していることで、運用や管理のために新しいことを学習しなければいけないという無駄を省いている点がLinkerdのメリットと言える。
特に可観測性(オブザーバービリティ)については、これまでデフォルトでインストールされていたPrometheusやGrafanaがViz-Extensionとしてオプション扱いになったことも大きく貢献していると言えるだろう。
このスライドにあるApplicationにサイドカーとしてデプロイされるのが、Rustで書かれたLinkerd2-Proxyだ。
またPod間の通信を暗号化するmTLSについても、アプリケーションに一切手を加えずにすぐに使い始められることを強調し、セキュアな通信のために余計な労力が要らないことを解説した。
クラスター間の通信にはMulti-Cluster Gatewayを導入している。これでマルチクラスター、オンプレミスとパブリッククラウドを連携させるような場合でも、セキュアな通信が可能となったことを紹介した。
そしてLinkerdとIstioとの比較については次のスライドで解説されている。Istioが多くの機能を備えた汎用のソフトウェアであるのに比べて、LinkerdはKubernetes専用であることが大きな違いだろう。BuoyantのCEOであるWilliam Morgan氏は「Istioを使うということはIBMやCiscoが推薦するソフトウェアを使うということだ。IBMのソフトウェアを選んでクビになったエンジニアはいないだろう?」と述べているが、それもスライドにちゃんと記載されているのは微笑ましい。
LinkerdとIstioの違いのひとつは性能だ。このスライドではサイドカーとしてPodにデプロイされたLinkerdとIstioを比較している。Proxyを入れてない場合(Baseline、黄色のバー)とLinkerd(青色のバー)、そしてIstio(オレンジ色のバー)のサイドカーを入れた場合のレイテンシー比較、CPUとメモリーの消費量などを比較して、Istioに比べてLinkerdが圧倒的に速く軽量であることが示されている。
この比較は2021年4月にMicrosoftが買収を発表したKinvolkというベンチャーによる調査を元にしている。KinvolkはFlatcar Container LinuxというランタイムやLokomotiveというパブリッククラウドに依存しないセルフホストなKubernetesディストリビューションを開発していることでも知られている。
参考:Benchmarking Linkerd and Istio
またLinkerdバージョン2.11の新機能であるAuthorization Policyを紹介した。
他にもこれからの開発予定として、ポリシーを使ったサーキットブレーカー、Proxyにおけるio-uringの実装などを紹介。
コミュニティのアップデートとしては、Graduationの他にユースケースを共有するためのCommunity Anchor Programなどが用意されている。また細かい話だが、これまでSlackを使って行われていたチャット機能についてはDiscordに移行したようだ。以前からSlackではなくてDiscordに変えたいと言っていたWilliam Morgan氏の考えが実現したのだろう。
Gould氏が「今日はスペシャルゲストが来ている」と言って紹介したのが、ロブスターのLinkyだ。CNCFのインキュベーションから卒業したHelmにもHazelというキャラクターが与えられているが、すべての卒業したプロジェクトに設定されているわけではないようなので、キャラクターを用意されているのは意味があるのだろう。
KubeConのキーノートでもIstioに比較して高速であることが強調されていた。
Morgan氏は今回のKubeConについて「以前のカンファレンスとは違うけど、人が少ないぶんだけ深い話ができるようになっているし、企業としては良かったのでは。サービスメッシュについてもブームは過ぎたと思うが、導入は進んでいるし、Linkerdにとっては良い方向に向かっている」と語ってくれた。
Istioへのマイグレーションの事例
ここからはIstioのマイグレーションに関するセッションを紹介する。
これはインドネシアの電子決済システムであるGoPayのエンジニア2名がインドネシアからロサンゼルスにやって来て実施したセッションで、参加者もスピーカーもほぼ北米から来ていた今回のKubeConの中では異色のセッションと言えるだろう。
GoPayは過去のKubeConでも講演を行っている。今回のセッションは、Kubernetesに移行した後にIstioを導入した際の苦労話と言った内容となっている。
GoPayのシステム全体がKubernetesベースで開発されているという前提から、Envoyを使った自社製のProxyを使ってサービスメッシュを使っていた。しかしこれが技術的負債になってしまうというリスクを避けるために、Istioへの移行を行ったという。
移行が進まない原因として、移行するための無駄な労力が必要だったことを挙げている。そのためにGoPayは、直接KubernetesやIstioの構成ファイルをデベロッパーに書かせるのではなく、Helmのチャートで一段階抽象化するレイヤーを用意することで、ダッシュボードからIstioの構成が生成されるように工夫したことを解説した。
このスライドでわかることは、Helmによって抽象化することで、現在のKubernetesやIstioだけではなく今後、開発される新しいシステムにも応用することを目指しているようだ。
結果として抽象化を実装したことで、4か月で50%以上のサービスがIstioに移行できたという。ここからわかるのは、Kubernetesだけでもデベロッパーにとっては新しく難しいという状況に加えて、Istioという新しいサービスメッシュのネットワークを直接触らせるのではなく、抽象化しないと使えないという事実だろう。逆に言えば、インフラストラクチャーチームにHelmを使って抽象化レイヤーを作れるだけのデベロッパーがいないと、この事例のような力技は使えない方法論だろう。
また既存のシステムと新システムを並行して運用する場合、新しいシステムをデフォルトにしないと使い慣れた方法に頼ってしまうというエンジニアの傾向を認識することが必要だ。
とにかくシンプルでKubernetesに特化したLinkerdに対し、多機能で非Kubernetes環境でも使えるIstioを使いこなすためのコツを紹介するセッションとなった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon NA 2020、サービスメッシュのLinkerdの概要とユースケースを紹介
- Linkerdを開発するBuoyantがサービスメッシュの始まりと未来を語る
- KubeCon Europe 2024からサービスメッシュのLinkerdの最新情報を紹介
- KubeCon+CloudNativeCon EU 2021、コロナ禍に対抗するシステムを支えるLinkerd
- サービスメッシュを実現するLinkerdの将来を、開発元のBuoyantが語る
- 「KubeCon NA 2022」から、サイドカーレスを実装したサービスメッシュのIstioのセッションを紹介
- サービスメッシュのLinkerdの最新リリースと将来計画をBuoyantのCEOが解説
- KubeCon Europe 2023から、Linkerdの最新情報とeBPFがサービスメッシュに使えない理由を解説したセッションを紹介
- Kubernetesをサービスメッシュ化するIstioとは?
- 写真で見る「KubeCon NA 2022」活気が戻ったショーケースを紹介