連載 [第3回] :
  StrimziCon 2024レポート

Kafka on KubernetesのStrimziConから新機能を解説するセッションを紹介

2024年7月22日(月)
松下 康之 - Yasuyuki Matsushita
Kafka on KubernetesのStrimziConから新機能を解説したセッションを紹介する。

StrimziCon 2024のセッションから、LittleHorseというクラウドサービスのベンチャーがマルチテナンシーをStrimziで実装した経験を解説したセッションを紹介する。登壇したのはLittleHorseの創業者であるColt McNealy氏だ。

LittleHorseの創業者であるColt McNealy氏

LittleHorseの創業者であるColt McNealy氏

動画は以下のURLから参照可能だ。

●動画:Partial Multi-Tenancy on Kafka Using Strimzi at LittleHorse

タイトルは「Partial Multi-Tenancy on Kafka Using Strimzi at LittleHorse」、Strimziを使ってマルチテナンシーを実装したユースケースの解説だ。LittleHorseはKafkaをベースにしたワークローを使ったマイクロサービスアプリケーションのホスティングを行う会社で、ワークフローの実装にKubernetes上のKafkaを使っている。より詳細な情報はLittleHorseのドキュメントサイトに公開されているので参照して欲しい。

●LittleHorseの公式サイト:https://www.littlehorse.io/

●ドキュメントサイト:LittleHorse Overview

LittleHorseの概要。ワークフローを使ったマイクロサービスのホスティング

LittleHorseの概要。ワークフローを使ったマイクロサービスのホスティング

このセッションの目的は、Strimzi/Kafkaを使ってKafkaクラスターをマルチテナントで使えるかどうかを検証するというものだ。

このスライドでは、LittleHorseのユーザーからはそれぞれ個別のKafkaクラスターを使っているような体験をさせたいというゴールが提示されている。

ユーザーからは個別のKafkaクラスターを使っているような体験を提供したい

ユーザーからは個別のKafkaクラスターを使っているような体験を提供したい

しかしLittleHorseとしては、同じクラスター内に複数のユーザーを収納して提供することがリソースの有効活用と運用サイドの労力を削減するために必要だということが説明された。

しかし実際にはひとつのKafkaクラスターを共有させることがゴール

しかし実際にはひとつのKafkaクラスターを共有させることがゴール

クラスター共有の理由は資源の有効活用と運用の工数削減

クラスター共有の理由は資源の有効活用と運用の工数削減

そのために必要なポイントを以下に示した。

マルチテナンシーのために考慮しなければいけないポイントを整理

マルチテナンシーのために考慮しなければいけないポイントを整理

「トピックの管理」「暗号化」「アクセスコントロール」「ノイジーネイバー問題」そして「クラスターのリバランシングによるスムーズな運用」の5つが要点となる。この内、暗号化とアクセスコントロールは同時に解決できることがこの後、解説された。冒頭に「Peace、Freedom、Justice、Security」というコンセプトが挙げられていたが、それらを上記の5つで実現したいというのがMcNealy氏の意図だ。

Kafkaトピックの管理はCLIでも可能だがそれは避けたい

Kafkaトピックの管理はCLIでも可能だがそれは避けたい

この後に何度も出てくる「KafkaのCLIで実現できるがそれは避けたい」という発想は、別のセッションで解説されたUnidirectional Topic Operatorと同じだろう。要するにKubernetesに沿った運用方法を行うためにはコントロールプレーン、つまり指示系統が必ずKubernetesからKafkaに向かう一方向だけにしたいという発想だ。

Kafkaのトピック管理にKubernetesのCRDを使う

Kafkaのトピック管理にKubernetesのCRDを使う

このオペレータによってKafkaのトピックの作成などがカスタムリソースを使って行えるようになり、Kubernetes→Kafkaの一方向になる。

この操作が一方向だけになることにより、GitHubで宣言的に必要な環境定義を行い、それをArgoCDなどのツール経由でKafkaを操作するというクラウドネイティブな運用方法が可能になる。

パイプラインがクラウドネイティブな形になる

パイプラインがクラウドネイティブな形になる

暗号化については、複数のユーザーが共存するというマルチテナンシーが目指すゴールであれば、アプリケーション間だけではなく他のさまざまな部分においても必要となる。そして当然だが、アクセスコントロールについても同様にマルチテナンシーを目指した機能が必要になることを説明した。

暗号化は必須

暗号化は必須

またアクセスコントロールについても、KafkaのユーザーのACLにプレフィックスを追加することで疑似的に分離させることが可能になることを説明した。いわゆるRole Based Access Controlとは異なるが、より簡易に行うための選択だ。

プレフィックスの追加によりアクセスコントロールを実装

プレフィックスの追加によりアクセスコントロールを実装

マニフェストの中のプレフィックスの例を紹介

マニフェストの中のプレフィックスの例を紹介

その他のセキュリティ機能として認証系を紹介

その他のセキュリティ機能として認証系を紹介

その他の機能として認証の部分について説明。StrimziからKeycloakを使う例は日立製作所のエンジニアが解説している記事を参照されたい。

●参考:コンテナ上のマイクロサービスの認証強化 ~StrimziとKeycloak~

またStrimziのブログ記事でもKeycloakを使った認証が解説されている。

●参考:Kafka authentication using OAuth 2.0

マルチテナンシーを実装する際の必要な機能の最後の部分としてバランシング問題を解説。その前提として、CPUタイムやストレージなどについては個別にクォータを設定することができないというKafkaの限界を説明した。

Kafkaの制限事項を解説。これができないとマルチテナンシーは難しい

Kafkaの制限事項を解説。これができないとマルチテナンシーは難しい

またクォータが設定できたとしても、クラスターのブローカーがアンバランスの状態であれば、意味がないとして、次のスライドを例として挙げた。

2つのブローカーが保持するパーティションにアンバランスが発生

2つのブローカーが保持するパーティションにアンバランスが発生

この状態になった場合、より良い状態はブローカーの保持するパーティションが均等に配分されることであると説明。実際にマニフェストの表記を見せて解説を行った。

均等に配分された状態を目指すために必要な実装は何か

均等に配分された状態を目指すために必要な実装は何か

リバランスの実装には複数の選択肢がある

リバランスの実装には複数の選択肢がある

リバランスを実現するためにはいくつかの選択肢があると説明したが、その中からLittleHorseが選択したのはCruise-ControlというLinkedInが開発し、公開しているオペレータだ。

●参考:https://github.com/linkedin/cruise-control

スライドではFancy Kubernetes Operatorとして表現されているが、LinkedInが巨大なKafkaクラスターの運用に使っているCruise-Controlの実績は大きいだろう。

StrimziはKafkaをKubernetes上で実装するためのオペレータであるために、すべての操作や運用のための発想がKubernetesメインになるのは自然だろう。ZooKeeperを廃止してKRaftに移行するのも、運用が難しいKafkaをKubernetesに任せるためには正しい方向性だ。マルチテナンシーについてはまだ改善の余地がありそうだが、LittleHorseのやり方は参考になると思われる。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

開発ツールイベント
第5回

StrimziCon 2024番外編、KafkaのリバランスをKubernetesのオペレータで実行するCruise Controlを紹介

2024/8/6
Kafkaのリバランスを可能にするCruise ControlをRed Hatの動画から紹介する。
ミドルウェアイベント
第4回

StrimziCon 2024からブラジルのネットバンクにおけるKafkaクラスター移行のセッションを紹介

2024/7/29
StrimziCon 2024から、ブラジルのネットバンクNubankによるKafkaクラスター移行の事例を解説したセッションを紹介する。
開発ツールイベント
第3回

Kafka on KubernetesのStrimziConから新機能を解説するセッションを紹介

2024/7/22
Kafka on KubernetesのStrimziConから新機能を解説したセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています