2021年10月11日 -15日に「KubeCon + CloudNativeCon North Ameraca 2021」がLos Angelesにて開催されました。 今回もオンラインで視聴が可能でしたので、いくつかのセッションを視聴しました。
興味深いセッションはたくさんありましたが、Kubernetes向けのサービスメッシュプロダクトである Linkerdのセッションがいくつかありましたのでそちらについての記事となります。
用語解説
KubeCon + CloudNativeCon・・・CNCF(Cloud Native Computing Foundation)主催の毎年数回開催されている Kubernetesやクラウドネイティブ技術領域の最新情報が発表されるイベントです。今年は5月にヨーロッパでも開催されました。
Kubernetes・・・コンテナオーケストレーションのデファクトスタンダードとなりつつあるコンテナ技術です。 スケジューリングや自己修復機能などコンテナをより迅速に展開、より使いやすく運用するためのオーケストレーションサービスです。
サービスメッシュ・・・複数の小さなサービスが相互連携するマイクロサービスのいくつかの課題を解決するための機能群やソフトウェアです。数年前から名前を聞くようになりました。メジャーなものとしてはIstioやLinkerdが有名です。
マイクロサービス型のアプリケーションは従来型のモノリシック(一枚岩)アプリケーションと異なり、機能ごとにサービスが分割され、各機能でのアップデートが他の機能に影響しにくいという利点があり、昨今のCI/CDを意識した運用、開発と相性がいいものとなっています。
反面、一つのサービスに障害が発生した際に各連携サービスからのAPI通信が滞留してしまい、健全なサービスまでにも影響が発生してしまうなどの課題がありました。また、複数のサービスが連携するのでログや監視などもモノリシックアプリケーションの場合とは別の観点で設計する必要があります。
これらをアプリケーション側の機能に盛り込むことで対応は可能ですが、利用したいサービス以外の機能群の開発が求めらることにより設計・開発負荷が上昇してしまいます。
また、サービスの数が多くなるにつれてどのサービス同士が連携しているのかを把握するのが難しくなるという管理面での複雑さも課題の一つです。
これらの課題を解決するのがサービスメッシュです。サービスメッシュはアプリケーションごとにプロキシを持たせることにより全てのサービス間通信をプロキシ経由で実施させます。Kubernetesで利用する場合は主にサイドカーコンテナとしてプロキシが利用されることが多く、Pod内にサービス用コンテナとは別にサービスメッシュ用のプロキシがコンテナとしてデプロイされます。
サービス間の通信をプロキシが代理することにより、タイムアウト・リトライ動作の実行や分散トレーシング技術を利用することができ、マイクロサービスでの課題を解決していくことができます。
- Linkerd・・・サービスメッシュソフトウェアの一つです。2016年にBuoyantによってリリースされ、本番環境でも利用実績があります。読み方は「リンカーディ」です。本記事ではLinkerd v2 について触れています。
KubeCon + CloudNativeCon North America 2021について
今回も各コミュニティやベンダーの方々がKubernetesやCloud Nativeの動向について熱く語っています。
基調講演ではKubernetesやCNCFの最新のアナウンスや最近のトレンドを発表しています。実際のビジネスでの実績も発表してくれますので、エンジニアだけではなく幅広い職種の方にも大変有意義な場となっております。
他にも各種の多彩なセッションがありますが、今回はサービスメッシュソフトウェアの一つであるLinkerdについてのセッションがいくつかありましたのでそちらを視聴しました。
Linkerdのセッションですが、以下の2つは開発元のBuoyant社のCEO William Morgan氏とCTO Oliver Gould氏によるもので大変分かりやすいセッションとなっています。
① A Crash Cource in mTLS and Authorization for Kubernetes with Linkerd
William Morgan氏によるLinkerdのmTLSについてのセッション
② Overview and State of Linkerd
Oliver Gould氏によるLinkerdの概要や現在の情報についてのセッション
youtu.be
特に②はLinkerdをこれから知っていきたいという方向けにも分かりやすいセッションだと感じました。
Kubernetesを構築する際にサービスメッシュを選択できる場面があった時は、Istioの方を選択する方も多いと思います(Istioもサービスメッシュソフトウェアの一つでGoogleやIBM、Lyftによって開発されました)。 IstioとLinkerdの機能・性能面を簡単に比較すると以下の通りです。
- Istio・・・機能が多く存在し多様なユースケースをサポートできるが、その反面操作が複雑で大変。ソフトウェア自体も大きい。
- Linkerd 2.x・・・Kubernetes環境を構築するための最低限の機能で、小さく軽量で速く動作する。また、簡単に理解し操作できるように作られている。ただし、Kubernetesでのみ機能する。
特に、軽量性については今回のセッションでもレイテンシ/CPU/メモリ消費量が圧倒的に少ないという所を強調しておりました。
また、基調講演でもアナウンスされていましたが、2021年7月にLinkerdはCNCFのプロジェクトレベルが「graduated」になりました。 (CNCFは各プロジェクトを「SANDBOX」、「INCUBATING」、「GRADUATED」にようにカテゴライズしており、右に行くほどそのソフトウェアが習熟しているという区分けになります。)
既に本番環境でも多くの実績があるLinkerdですが、これからますますKubernetes上でサービスメッシュを利用する際の選択肢の一つとなりそうです。
執筆: 久野範文, フェロー