KubeCon EU、Linkerdでマルチクラスターを実装するセッションを紹介

サービスメッシュのLinkerdを使ってマルチクラスター実装を解説するセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2021年10月12日 5:50

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氏の自己紹介

Körbächer氏の自己紹介

本番環境で複数クラスター利用のケースが増加

Körbächer氏はKubernetesクラスターの形態について、「さまざまな形がありうる」として、すべてを一つのクラスターに収める方法、組織の形態に従って組織ごとのクラスターを用意する方法、関連するアプリケーションが通信するソフトウェアをまとめてクラスターに集約する方法、そして一つのアプリケーションごとにクラスターを用意する方法があると解説。シンプルなクラスターから、組織構造などによって複数のクラスターが必要となるケースを説明した。

ニーズによって変わるクラスターの種類を解説

ニーズによって変わるクラスターの種類を解説

またCNCFが行ったサーベイの結果を元に、本番環境で利用されるクラスターの数は単一のクラスターという形態が減少し、10以上のクラスターを使うケースが徐々に増えていることを紹介。

CNCFのサーベイで本番クラスターの数が増えているのが分かる

CNCFのサーベイで本番クラスターの数が増えているのが分かる

またクラスターを増やした際のアプリケーションを分離する方法論として、ネームスペースを分ける、ラベルを付ける、クラスターを分割するなどの手法が取られていることがわかるが、セキュリティやモニタリングなどのポイントについて苦労していることを指摘した。

ここからはある案件の条件を元に、マルチクラスターが必要となる要素を解説することになった。特にKörbächer氏がミュンヘン在住であることからわかるように、EUのGDPR(General Data Protection Regulation)を意識した内容となっている。

マルチクラスターが必要となる条件を解説

マルチクラスターが必要となる条件を解説

特にすべての通信を暗号化すること、フロントエンド、バックエンド、データベースサービスをアイソレーションすること、APIによって各サブシステムが統合されることなどが必須の条件として解説された。

例として挙げたシステムをアーキテクチャー図として解説

例として挙げたシステムをアーキテクチャー図として解説

このスライドで描かれたアーキテクチャー図は、インターネット側から入ってきたトラフィックが中央のリージョンに実装された2つのクラスター(フロントエンドとバックエンド)による処理を経て、別のリージョンのクラスター(データマネージメントとバックエンド)にデータとして書き込まれる形になっていることがわかる。

アーキテクチャー図の拡大

アーキテクチャー図の拡大

このアーキテクチャーでは分離はされているものの、トラフィックの暗号化、サービスの接続など多くのマニュアル作業が必要であるとして、アプリケーション実装の方法としては必ずしもクラウドネイティブではないと解説した。

解決案としてLinkerdを提案

解決案としてLinkerdを提案

そして解決案として、Linkerdを複数のクラスターを繋ぐためのコンポーネントとして利用することを提案したと説明した。Linkerdを使うことの利点は、すべてのトラフィックが暗号化されること、モニタリング、トレーシングなどの監視機能が用意されていること、サービスミラーリングを使えばクラスター間の通信のための特別な設定が不要となることなどを挙げた。

Yelbを用いたデモ

ここからはデモとして、Yelbという投票を行うサンプルアプリケーションを使ってマルチクラスターにおけるLinkerdの設定などを紹介するフェーズとなった。

デモはYelbを利用

デモはYelbを利用

Yelbについては以下のGitHubリポジトリーを参照されたい。AWSのエンジニア、Massimo Re Ferre氏が公開しているLambdaを使った3層構造のデモアプリケーションだ。

Yelb:https://github.com/mreferre/yelb

Yelbのアーキテクチャー図

Yelbのアーキテクチャー図

今回のマルチクラスターの実装ではyelb-uiの部分をローカルで受け、フロントエンドをAWSのWestリージョンに設置されたSVC-Westという名前のクラスターで実装、データベースサービスをSVC-Eastクラスターで実装し、そのクラスター間通信をLinkerdが担当するという内容だ。

Linkerdによるマルチクラスター通信を紹介

Linkerdによるマルチクラスター通信を紹介

デモとして紹介されたYelbは、WebUIから投票を行うというシンプルなもので、このページには実行されているアプリケーションサーバーのPod名が表示されている。

デモとして使われたYelbのWebユーザーインターフェース

デモとして使われたYelbのWebユーザーインターフェース

Linkerdのコンソールからも実行されているPodなどのようすが確認できる。

Linkerdの管理コンソールから確認

Linkerdの管理コンソールから確認

またデフォルトで実装される監視用のPrometheusのデータを、Grafanaから確認することもできることを紹介。

Grafanaでフロントエンドの状況を確認

Grafanaでフロントエンドの状況を確認

このスライドではLinkerdの設定のためのコマンドを紹介。ローカルからSVC-West、SVC-WestからSVC-Eastに通信を行うという設定になっていることを解説した。

またLinkerdがサービスメッシュのツールであることを応用して、トラフィックを50%ずつに分割することも可能であることを紹介した。

トラフィック分割もLinkerdの設定で可能

トラフィック分割もLinkerdの設定で可能

ここではLinkerdの設定として、フロントエンド→バックエンド→データベースという順に参照されていること、サービス間の通信だけが許可されていることなどを紹介した。

ミラーリングの機能を有効にしてクラスター間を接続

ミラーリングの機能を有効にしてクラスター間を接続

またアプリケーション全体の監視機能としてサクセスレート、秒単位のリクエスト数、遅延などが可視化されることを紹介した。

可視化について解説

可視化について解説

またトレーシングについても、Jaegerによる可視化が可能になっていることをJaegerのインターフェースを操作して紹介した。

Jaegerのインターフェースを使ってトレーシングを紹介

Jaegerのインターフェースを使ってトレーシングを紹介

サービス間の実行時間を表示

サービス間の実行時間を表示

ただJaegerのデモで使われたデータはYelbのデモではなく、Linkerdの標準のデモであるEmojivotoというアプリケーションのデータであり、機能の紹介としては過不足はないものの、若干説明が足りないように感じた。

まとめ

ここからはまとめとして「マルチクラスターが必要な条件」を挙げて解説した。具体的例として、待機用として本番機と同様のクラスターが必要な場合や、ブルー/グリーンデプロイメントを行うような場合を示した。また通信が必要なアプリケーションが多数存在する場合、オンプレミスとパブリッククラウドを接続する必要がある場合などを条件として挙げて、説明を行った。

マルチクラスターが必要な場合とは?

マルチクラスターが必要な場合とは?

またこの例での得られた教訓として、サービスのエンドポイントの命名方法などにも留意すること、サービスメッシュの運用は難しいこと、サービス名を組織名などに沿って付けると長くなりがちなので注意することなどを挙げた。Körbächer氏はLinkerdのアップデートには苦労したようで、この後もアップデートには注意するようにというポイントを挙げて説明している。

Linkerdをマルチクラスターに使う際の要点

Linkerdをマルチクラスターに使う際の要点

最後に、実際にLinkerdの設定におけるポイントを解説してセッションを終えた。

さらに細かい要点を解説

さらに細かい要点を解説

セッションの動画及びスライドは以下のURLから参照することができる。

動画:Seamless multi-cluster Communication and Observability with Linkerd - Max Körbächer, Liquid Reply

セッションのスライド(PDF):https://static.sched.com/hosted_files/kccnceu2021/d7/seamless_multi_cluster_communication_and_observability_with_linkerd_MaxKoerbaecher_50521_v1.pdf

Linkerd自体のアップデートについては何度も「簡単ではない」と強調したKörbächer氏だった。Linkerdの開発元であるBuoyantは、Managed LinkerdであるBuoyant Cloudを発表している。正式にサービスインが始まるのは2021年7月以降と思われるが、マネージドであればLinkerd自体のアップデートなどに関する苦労は解消されるのではないだろうか。

参考:Buoyant Cloud

Yelbのデモは以下のGitHubリポジトリーを参照されたい。

Yelb:https://github.com/mreferre/yelb

またLinkerdが用意しているデモアプリケーションは、以下のURLから参照されたい。

Emojivoto:https://github.com/BuoyantIO/emojivoto

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30