MatsushitaTweetサービスメッシュのLinkerdを使ってマルチクラスター実装を解説するセッションを紹介する。EUから、サービスメッシュのLinkerdでクラスターをマルチで接続する実装方法を、デモを交えて解説するセッションを紹介する。Körbächer氏だ。Linkerd」というもので、単一のクラスターで実装するのではなく、1つのアプリケーションを3つのクラスターに分割して実装する際の要点や注意点を解説するものだ。デモとしてフロントエンド、バックエンド、データベースサービスの3つをそれぞれオンプレミスのKubernetesとAWS上のKubernetes(2つのリージョンを利用)に分けて実装して、解説に利用するという内容だ。group)Releaseの一員として、1.17からコントリビューションを行っているエンジニアだ。本番環境で複数クラスター利用のケースが増加Körbächer氏はKubernetesクラスターの形態について、「さまざまな形がありうる」として、すべてを一つのクラスターに収める方法、組織の形態に従って組織ごとのクラスターを用意する方法、関連するアプリケーションが通信するソフトウェアをまとめてクラスターに集約する方法、そして一つのアプリケーションごとにクラスターを用意する方法があると解説。シンプルなクラスターから、組織構造などによって複数のクラスターが必要となるケースを説明した。ニーズによって変わるクラスターの種類を解説またCNCFが行ったサーベイの結果を元に、本番環境で利用されるクラスターの数は単一のクラスターという形態が減少し、10以上のクラスターを使うケースが徐々に増えていることを紹介。CNCFのサーベイで本番クラスターの数が増えているのが分かるまたクラスターを増やした際のアプリケーションを分離する方法論として、ネームスペースを分ける、ラベルを付ける、クラスターを分割するなどの手法が取られていることがわかるが、セキュリティやモニタリングなどのポイントについて苦労していることを指摘した。ここからはある案件の条件を元に、マルチクラスターが必要となる要素を解説することになった。Regulation)を意識した内容となっている。すべての通信を暗号化すること、フロントエンド、バックエンド、データベースサービスをアイソレーションすること、APIによって各サブシステムが統合されることなどが必須の条件として解説された。例として挙げたシステムをアーキテクチャー図として解説このスライドで描かれたアーキテクチャー図は、インターネット側から入ってきたトラフィックが中央のリージョンに実装された2つのクラスター(フロントエンドとバックエンド)による処理を経て、別のリージョンのクラスター(データマネージメントとバックエンド)にデータとして書き込まれる形になっていることがわかる。アーキテクチャー図の拡大このアーキテクチャーでは分離はされているものの、トラフィックの暗号化、サービスの接続など多くのマニュアル作業が必要であるとして、アプリケーション実装の方法としては必ずしもクラウドネイティブではないと解説した。解決案としてLinkerdを提案そして解決案として、Linkerdを複数のクラスターを繋ぐためのコンポーネントとして利用することを提案したと説明した。Linkerdを使うことの利点は、すべてのトラフィックが暗号化されること、モニタリング、トレーシングなどの監視機能が用意されていること、サービスミラーリングを使えばクラスター間の通信のための特別な設定が不要となることなどを挙げた。Yelbを用いたデモここからはデモとして、Yelbという投票を行うサンプルアプリケーションを使ってマルチクラスターにおけるLinkerdの設定などを紹介するフェーズとなった。デモはYelbを利用Yelbについては以下のGitHubリポジトリーを参照されたい。Ferre氏が公開しているLambdaを使った3層構造のデモアプリケーションだ。今回のマルチクラスターの実装ではyelb-uiの部分をローカルで受け、フロントエンドをAWSのWestリージョンに設置されたSVC-Westという名前のクラスターで実装、データベースサービスをSVC-Eastクラスターで実装し、そのクラスター間通信をLinkerdが担当するという内容だ。Linkerdによるマルチクラスター通信を紹介デモとして紹介されたYelbは、WebUIから投票を行うというシンプルなもので、このページには実行されているアプリケーションサーバーのPod名が表示されている。デモとして使われたYelbのWebユーザーインターフェースLinkerdのコンソールからも実行されているPodなどのようすが確認できる。Linkerdの管理コンソールから確認またデフォルトで実装される監視用のPrometheusのデータを、Grafanaから確認することもできることを紹介。Grafanaでフロントエンドの状況を確認このスライドではLinkerdの設定のためのコマンドを紹介。ローカルからSVC-West、SVC-WestからSVC-Eastに通信を行うという設定になっていることを解説した。Linkerdがサービスメッシュのツールであることを応用して、トラフィックを50%ずつに分割することも可能であることを紹介した。トラフィック分割もLinkerdの設定で可能ここではLinkerdの設定として、フロントエンド→バックエンド→データベースという順に参照されていること、サービス間の通信だけが許可されていることなどを紹介した。ミラーリングの機能を有効にしてクラスター間を接続またアプリケーション全体の監視機能としてサクセスレート、秒単位のリクエスト数、遅延などが可視化されることを紹介した。可視化について解説またトレーシングについても、Jaegerによる可視化が可能になっていることをJaegerのインターフェースを操作して紹介した。Jaegerのインターフェースを使ってトレーシングを紹介サービス間の実行時間を表示ただJaegerのデモで使われたデータはYelbのデモではなく、Linkerdの標準のデモであるEmojivotoというアプリケーションのデータであり、機能の紹介としては過不足はないものの、若干説明が足りないように感じた。まとめここからはまとめとして「マルチクラスターが必要な条件」を挙げて解説した。具体的例として、待機用として本番機と同様のクラスターが必要な場合や、ブルー/グリーンデプロイメントを行うような場合を示した。通信が必要なアプリケーションが多数存在する場合、オンプレミスとパブリッククラウドを接続する必要がある場合などを条件として挙げて、説明を行った。マルチクラスターが必要な場合とは?またこの例での得られた教訓として、サービスのエンドポイントの命名方法などにも留意すること、サービスメッシュの運用は難しいこと、サービス名を組織名などに沿って付けると長くなりがちなので注意することなどを挙げた。Körbächer氏はLinkerdのアップデートには苦労したようで、この後もアップデートには注意するようにというポイントを挙げて説明している。最後に、実際にLinkerdの設定におけるポイントを解説してセッションを終えた。細かい要点を解説セッションの動画及びスライドは以下のURLから参照することができる。Replyセッションのスライド(PDF):https://static.sched.com/hosted_files/kccnceu2021/d7/seamless_multi_cluster_communication_and_observability_with_linkerd_MaxKoerbaecher_50521_v1.pdfLinkerd自体のアップデートについては何度も「簡単ではない」と強調したKörbächer氏だった。Cloudを発表している。正式にサービスインが始まるのは2021年7月以降と思われるが、マネージドであればLinkerd自体のアップデートなどに関する苦労は解消されるのではないだろうか。CloudYelbのデモは以下のGitHubリポジトリーを参照されたい。Yelb:https://github.com/mreferre/yelbまたLinkerdが用意しているデモアプリケーションは、以下のURLから参照されたい。この著者の記事一覧フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。EU、欠点から逆算するKubernetesのネットワークに関するセッションを紹介2021/10/13eBPFを使ったネットワークスタックであるCiliumの開発元のCTOがKubernetesのネットワークの弱点を紹介。EU、Linkerdでマルチクラスターを実装するセッションを紹介2021/10/12サービスメッシュのLinkerdを使ってマルチクラスター実装を解説するセッションを紹介する。EUからAlibabaのエンジニアが行ったKubeVelaとDaprに関するセッションを紹介する。Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。Europeでサービスメッシュの標準化を目指すSMIを発表。ITがお届けするポッドキャストです。