KubeCon EU、Linkerdでマルチクラスターを実装するセッションを紹介
KubeCon EUから、サービスメッシュのLinkerdでクラスターをマルチで接続する実装方法を、デモを交えて解説するセッションを紹介する。プレゼンテーションを行ったのは、Liquid Replyというクラウドネイティブなシステムに特化したエンジニアリングサービスファームの共同創業者であるMax Körbächer氏だ。セッションのタイトルは「Seamless multi-cluster Communication and Observability with Linkerd」というもので、単一のクラスターで実装するのではなく、1つのアプリケーションを3つのクラスターに分割して実装する際の要点や注意点を解説するものだ。
デモとしてフロントエンド、バックエンド、データベースサービスの3つをそれぞれオンプレミスのKubernetesとAWS上のKubernetes(2つのリージョンを利用)に分けて実装して、解説に利用するという内容だ。
Körbächer氏はKubernetesのSIG(Special Interests group)Releaseの一員として、1.17からコントリビューションを行っているエンジニアだ。
本番環境で複数クラスター利用のケースが増加
Körbächer氏はKubernetesクラスターの形態について、「さまざまな形がありうる」として、すべてを一つのクラスターに収める方法、組織の形態に従って組織ごとのクラスターを用意する方法、関連するアプリケーションが通信するソフトウェアをまとめてクラスターに集約する方法、そして一つのアプリケーションごとにクラスターを用意する方法があると解説。シンプルなクラスターから、組織構造などによって複数のクラスターが必要となるケースを説明した。
またCNCFが行ったサーベイの結果を元に、本番環境で利用されるクラスターの数は単一のクラスターという形態が減少し、10以上のクラスターを使うケースが徐々に増えていることを紹介。
またクラスターを増やした際のアプリケーションを分離する方法論として、ネームスペースを分ける、ラベルを付ける、クラスターを分割するなどの手法が取られていることがわかるが、セキュリティやモニタリングなどのポイントについて苦労していることを指摘した。
ここからはある案件の条件を元に、マルチクラスターが必要となる要素を解説することになった。特にKörbächer氏がミュンヘン在住であることからわかるように、EUのGDPR(General Data Protection Regulation)を意識した内容となっている。
特にすべての通信を暗号化すること、フロントエンド、バックエンド、データベースサービスをアイソレーションすること、APIによって各サブシステムが統合されることなどが必須の条件として解説された。
このスライドで描かれたアーキテクチャー図は、インターネット側から入ってきたトラフィックが中央のリージョンに実装された2つのクラスター(フロントエンドとバックエンド)による処理を経て、別のリージョンのクラスター(データマネージメントとバックエンド)にデータとして書き込まれる形になっていることがわかる。
このアーキテクチャーでは分離はされているものの、トラフィックの暗号化、サービスの接続など多くのマニュアル作業が必要であるとして、アプリケーション実装の方法としては必ずしもクラウドネイティブではないと解説した。
そして解決案として、Linkerdを複数のクラスターを繋ぐためのコンポーネントとして利用することを提案したと説明した。Linkerdを使うことの利点は、すべてのトラフィックが暗号化されること、モニタリング、トレーシングなどの監視機能が用意されていること、サービスミラーリングを使えばクラスター間の通信のための特別な設定が不要となることなどを挙げた。
Yelbを用いたデモ
ここからはデモとして、Yelbという投票を行うサンプルアプリケーションを使ってマルチクラスターにおけるLinkerdの設定などを紹介するフェーズとなった。
Yelbについては以下のGitHubリポジトリーを参照されたい。AWSのエンジニア、Massimo Re Ferre氏が公開しているLambdaを使った3層構造のデモアプリケーションだ。
Yelb:https://github.com/mreferre/yelb
今回のマルチクラスターの実装ではyelb-uiの部分をローカルで受け、フロントエンドをAWSのWestリージョンに設置されたSVC-Westという名前のクラスターで実装、データベースサービスをSVC-Eastクラスターで実装し、そのクラスター間通信をLinkerdが担当するという内容だ。
デモとして紹介されたYelbは、WebUIから投票を行うというシンプルなもので、このページには実行されているアプリケーションサーバーのPod名が表示されている。
Linkerdのコンソールからも実行されているPodなどのようすが確認できる。
またデフォルトで実装される監視用のPrometheusのデータを、Grafanaから確認することもできることを紹介。
このスライドではLinkerdの設定のためのコマンドを紹介。ローカルからSVC-West、SVC-WestからSVC-Eastに通信を行うという設定になっていることを解説した。
またLinkerdがサービスメッシュのツールであることを応用して、トラフィックを50%ずつに分割することも可能であることを紹介した。
ここではLinkerdの設定として、フロントエンド→バックエンド→データベースという順に参照されていること、サービス間の通信だけが許可されていることなどを紹介した。
またアプリケーション全体の監視機能としてサクセスレート、秒単位のリクエスト数、遅延などが可視化されることを紹介した。
またトレーシングについても、Jaegerによる可視化が可能になっていることをJaegerのインターフェースを操作して紹介した。
ただJaegerのデモで使われたデータはYelbのデモではなく、Linkerdの標準のデモであるEmojivotoというアプリケーションのデータであり、機能の紹介としては過不足はないものの、若干説明が足りないように感じた。
まとめ
ここからはまとめとして「マルチクラスターが必要な条件」を挙げて解説した。具体的例として、待機用として本番機と同様のクラスターが必要な場合や、ブルー/グリーンデプロイメントを行うような場合を示した。また通信が必要なアプリケーションが多数存在する場合、オンプレミスとパブリッククラウドを接続する必要がある場合などを条件として挙げて、説明を行った。
またこの例での得られた教訓として、サービスのエンドポイントの命名方法などにも留意すること、サービスメッシュの運用は難しいこと、サービス名を組織名などに沿って付けると長くなりがちなので注意することなどを挙げた。Körbächer氏はLinkerdのアップデートには苦労したようで、この後もアップデートには注意するようにというポイントを挙げて説明している。
最後に、実際にLinkerdの設定におけるポイントを解説してセッションを終えた。
セッションの動画及びスライドは以下のURLから参照することができる。
動画:Seamless multi-cluster Communication and Observability with Linkerd - Max Körbächer, Liquid Reply
Linkerd自体のアップデートについては何度も「簡単ではない」と強調したKörbächer氏だった。Linkerdの開発元であるBuoyantは、Managed LinkerdであるBuoyant Cloudを発表している。正式にサービスインが始まるのは2021年7月以降と思われるが、マネージドであればLinkerd自体のアップデートなどに関する苦労は解消されるのではないだろうか。
Yelbのデモは以下のGitHubリポジトリーを参照されたい。
Yelb:https://github.com/mreferre/yelb
またLinkerdが用意しているデモアプリケーションは、以下のURLから参照されたい。
Emojivoto:https://github.com/BuoyantIO/emojivoto
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon NA 2020 LinkerdとAmbassadorを使ったマルチクラスター通信を紹介
- サービスメッシュのLinkerd 2.9を紹介。EWMA実装のロードバランサー機能とは
- サービスメッシュのLinkerd、Pod間通信にオーソライゼーションポリシーを実装
- KubeCon Europe 2023から、Linkerdの最新情報とeBPFがサービスメッシュに使えない理由を解説したセッションを紹介
- KubeCon Europeでサービスメッシュの標準化を目指すSMIを発表。Istioの動向にも注目
- KubeCon NA 2020、サービスメッシュのLinkerdの概要とユースケースを紹介
- KubeCon NA 2021からサービスメッシュの2セッションを紹介
- KubeCon Europe 2024からサービスメッシュのLinkerdの最新情報を紹介
- Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
- Observability Conference 2022、Splunkのエンジニアが説明するOpenTelemetryの入門編