Linkerd Day Europe 2023レポート 2

KubeCon共催のLinkerd Dayからマルチクラスターモニタリングに関するセッションを紹介

Linkerd Dayからマルチクラスターでのモニタリングを導入したセッションを紹介。

松下 康之 - Yasuyuki Matsushita

2023年9月12日 6:00

KubeCon+CloudNativeCon Europe 2023の共催でサービスメッシュのLinkerdに特化したイベントLinkerd Dayから、マルチクラスターにおけるモニタリングのユースケースを解説するセッションを紹介する。セッションを行ったのはBWI GmbHのCaroline Dohmen氏だ。

セッションを行ったDohmen氏はドイツの国防省直轄のITサービス企業、BWI GmbH所属。

セッションを行ったDohmen氏はドイツの国防省直轄のITサービス企業、BWI GmbH所属。

このセッションで解説されたユースケースは、finleap Connectという金融サービス企業における実装例だ。Dohmen氏の所属はBWIだが、今回は前職で手掛けた事例を紹介している。

finleapの概要を紹介。各国の金融サービスを接続するサービスがfinleap

finleapの概要を紹介。各国の金融サービスを接続するサービスがfinleap

アカウントの集約(アグリゲーション)やペイメントの接続などがfinleapのサービスの中核であると説明し、そのサービスのモニタリングにはアラートや障害時のメトリクスなどが必要要件として挙げられている。

モニタリングに必要な要件。アラートなどが必要だがストレージは短期間で良い

モニタリングに必要な要件。アラートなどが必要だがストレージは短期間で良い

ここではアラートなどのメトリクス監視が必須となっているが、データの保存に関しては2日間という短期で良いとして、長期間のストレージ機能は必要ないことが説明されている。

当初のシステム概要。本番と開発用のベアメタルクラスターが2セットだった

当初のシステム概要。本番と開発用のベアメタルクラスターが2セットだった

finleapの当初は本番用と開発用の2つの環境においてベアメタルのオンプレミスクラスターが用意され、それぞれPrometheusがデータ収集、可視化はGrafana、プラットフォームはKubernetesという標準的な組み合わせだった。

しかしビジネスの拡大に伴ってプラットフォーム自体も拡大し、バーレインではAWSが、ドイツとスペインではGCPが使われ、その上でVMwareのTanzuとOpenStackでの実装が求められていったと説明した。

オンプレベアメタルからAWS、GCPなどの実装が必要に

オンプレベアメタルからAWS、GCPなどの実装が必要に

そしてプラットフォームごとに同じ構成をコピー&ペーストして複製するという発想では、すぐに行き詰まることは明らかだったとして、プラットフォームごとに実装されるPrometheusを連携させてデータを連携させる方式が検討されたことを説明。

プラットフォームごとにPrometheusを実装し、データを中央のPrometheusで集約

プラットフォームごとにPrometheusを実装し、データを中央のPrometheusで集約

この方式では各プラットフォームから転送されるデータの量が膨大になるとして、提案されたのが中央のPrometheusにデータを集約させるのではなく、各プラットフォームのPrometheusに中央のGrafanaからデータを可視化に必要な分だけ取りに行く方式だ。

中央にPrometheusを置かずにGrafanaがデータを取りに行く方式に変更

中央にPrometheusを置かずにGrafanaがデータを取りに行く方式に変更

そしてモニタリングの対象となるクラスター間の通信も、LinkerdのMulti-Cluster Extensionを使って容易に実装できたと説明。

Linkerdを使ってクラスター間の通信も容易に実装できた

Linkerdを使ってクラスター間の通信も容易に実装できた

Pod間の通信はmTLSで暗号化され、金融サービスとして必須の要件が満足できていることを示した。

サービスミラーリングという発想でLinkerdとPrometheusを連携し、サービスディスカバリーが実装されていることを説明した。

サービスミラーリングで新しく生成されたPrometheusを発見し、モニタリングに組み込むことが可能に

サービスミラーリングで新しく生成されたPrometheusを発見し、モニタリングに組み込むことが可能に

その際に認証情報を生成するためにはTrust Anchorというサービスを利用して各Podが使う認証情報を連携させる必要があることにも言及して、Podのセキュリティを上げるために認証情報をどうやって管理するのか? という面倒な仕事が発生することをコメントした。

Trust Anchorを使ってクラスター間の認証情報を管理

Trust Anchorを使ってクラスター間の認証情報を管理

この実装にはHelmを使っていると説明したが、Linkerdが提供する公式のHelmチャートがまだ存在せず、Dohmen氏自身が作成したチャートを紹介。ここではLinkerdのマルチクラスターのためのコマンドを最大限に活用していることがわかる。

Dohmen氏が作成したHelmチャートを紹介

Dohmen氏が作成したHelmチャートを紹介

●GitHubのDohmen氏の個人リポジトリ:https://github.com/maresac/linkerd-multicluster-link

このセッションのまとめとして、マルチクラスターのモニタリングにはクラスターごとのモニタリングデータを1箇所で集約するとデータ転送にかかるコストが増大することから、各クラスター内でデータを保存し、中央のGrafanaから必要に応じてデータをプルする方式が良いことを紹介している。同時にマルチクラスター間の通信にはLinkerdのマルチクラスターエクステンションを使うことで容易に実装できること、Helmチャートを使うことでライフサイクルの管理も容易になることが紹介された。

Istioのユースケースセッションでマルチクラスター間通信をIstioで実装する難しさや苦労話は良く聞く話だが、Linkerdにおいてはその苦労は必要ないというのがこのセッションの隠れたテーマであったように思える。マルチクラスターでアプリケーションを実装しようと考えているエンジニアには参考になるセッションだった。

●動画:Cost-Efficient Multi-Cluster Monitoring with Prometheus

余談だが、ユースケースの対象となったfinleapのAPIドキュメントサイトが非常に良くできているので紹介したい。APIのパラメータからレスポンスの例など非常にインタラクティブに理解を進めることができるサイトになっている。システムのAPIドキュメント公開の際のベストプラクティスとして活用して欲しい。

●参考:finleap APIドキュメントサイト

この記事をシェアしてください

人気記事トップ10

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