Slide 1

Slide 1 text

Apache Kafka と Kubernetes Apache Kafka Meetup Japan #8 鈴木亮 @ レッドハット

Slide 2

Slide 2 text

今日ご紹介したいこと 01. 02. Strimzi Operator で運用を効率化 Kafka 構築においてコンテナ基盤も選択肢の一つへ ※ 本資料は個人の見解のため所属する団体とは関係ありません。

Slide 3

Slide 3 text

なぜ Apache Kafka on Kubernetes なのか? 自動回復・自動スケーリング 現在のシステム状態 (Current Status)が 望ましい状態 (Desired Status)に一致するように 繰り返し動作できる。 分散システム スケーラブル リソースの抽象化 宣言的な記述だけでインフラリソースの 作成・管理ができる。 Kubernetes の価値を、Kafka に適応 Kubernetesの価値

Slide 4

Slide 4 text

kubernetes Apache Kafka

Slide 5

Slide 5 text

Strimzi とは ● CNCFプロジェクト ● Apache Kafka を Kubernetes 上で実行するために以下を提供; ○ コンテナイメージ ○ Strimzi Operators (カスタムリソース & カスタム Controller ) ■ デプロイメント・クラスタ管理 ■ 設定変更・管理、Topic、User作成、セキュリティ などなど apiVersion: apps/v1 kind: Kafka metadata: name: my-cluster spec: replicas: 3 selector: matchLabels:       : Kafka Broker x3 Zookeeper x3 カスタムリソース カスタム Controller リソース (K8s 組み込み) StatefulSets Pods Secrets ReplicaSets : Strimziが提供する カスタムリソース Kafka KafkaTopic KafkaUser KafkaConnect : Kafkaに特化したリ ソースを提供 運用の知見をコー ド化

Slide 6

Slide 6 text

Strimzi OperatorによるKafka構築 コマンド2つで自動運用されるKafka Brokerクラスタ構築 $ kubectl apply -f install/cluster-operator $ kubectl apply -f kafka-ephemeral.yaml Step 1. Strimzi Cluster Operatorの構築 Step 2. Kafka Broker クラスタの構築

Slide 7

Slide 7 text

Strimzi OperatorによるKafka構築 CRD Operator用 リソース and Deployment Step 1. kubectl apply -f

Slide 8

Slide 8 text

Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment Operator用 リソース and Strimzi Cluster Operator

Slide 9

Slide 9 text

Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator kubectl apply -f Step 2.

Slide 10

Slide 10 text

Strimzi OperatorによるKafka構築 CRD strimzi-cluster-operator Deployment zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator

Slide 11

Slide 11 text

Strimzi OperatorによるKafka構築 CRD kafka tls-sidecar StatefulSet (Kafka Broker) strimzi-cluster-operator Deployment kafka tls-sidecar kafka tls-sidecar zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper topic-operator user-operator tls-sidecar Deployment Operator用 リソース Kafkaカスタム リソース and Entity Operator Strimzi Cluster Operator

Slide 12

Slide 12 text

Strimzi OperatorによるKafka構築 CRD kafka tls-sidecar StatefulSet (Kafka Broker) strimzi-cluster-operator Deployment kafka tls-sidecar kafka tls-sidecar zookeeper StatefulSet (ZooKeeper) zookeeper zookeeper Operator用 リソース Kafkaカスタム リソース and Strimzi Cluster Operator kubectl apply -f 更新! topic-operator user-operator tls-sidecar Deployment Entity Operator

Slide 13

Slide 13 text

Strimzi Operatorと運用 Kafkaの運用体制 = Strimzi Operator + 運用チーム(人) Strimzi Operatorによって運用負荷を下げることで 開発・エンジニアリングにより専念できる環境を作ることができます。 ・Kafkaクラスタの自動構築・運用 ・Kafka コンポーネントの自動構築・運用 ・セキュリティ管理 ・アップグレード ・自律運用によるノードダウン復旧 ・TopicやUserの作成・管理   など ・クラスタ設計 ・ハードウェア障害の対応 ・自動化失敗時の対応 ・チューニング ・アップグレードなど運用計画        : Strimzi Operatorが できること 運用チーム(人) * strimzi.io Documentを参考

Slide 14

Slide 14 text

今日ご紹介したいこと = まとめ 01. 02. Strimzi Operator で運用を効率化 Kafka 構築においてコンテナ基盤も選択肢の一つへ

Slide 15

Slide 15 text

ハンズオン参考資料 ● Strimzi Kafka Operator セットアップ ○ http://bit.ly/37SdV5D ● Control Cruise ○ http://bit.ly/3plR8Vn

Slide 16

Slide 16 text

Q&A Q) Brokerのバージョンアップの際にrolling updateが必要になるケース等あると思いますが、そ ういうケースもサポートされているのでしょうか? A) はい、アップグレード時のRolling updateは可能です。 StrimziのRolling updateでは、リスタート対象のノードがControllerかであるか否かを確認してい ます。もしリスタート対象のノードに Controllerが存在する場合はスキップし、無駄な Controller Electionを避けるようなアルゴリズムがStrimzi Cluster Operatorには備わっています。 もし不明瞭な点がありましたら、 @suzukiry25までご連絡お願いできければと思います。

Slide 17

Slide 17 text

Q&A Q) KafkaUserをブローカと別のNamespaceに作成は可能でしょうか? A) Cluster Operator経由※でUser Operatorが構築された場合は、KafkaUserリソースを異なる namespaceに作成した場合は処理されませんでした。理由としては、作成された User Operator 内のKafkaUserリソースをwatchするnamespaceの設定がKafka Brokerのnamespaceと同じも のが設定されているためです。 ※User OperatorをCluster Operator経由ではなく、Standaloneとして構築する場合は、 STRIMZI_NAMESPACE に KafuaUserリソースをwatchしたい namespaceを指定することができるので、こちらの方法ですと実現できるかもしれません。ただし Kafka BrokerとUser Operatorのペアを作らない場合は構 成がやや複雑になったりもするので、(もちろん要件に応じてですが)個人的には運用の観点では namespaceは同じにしておいた方が良いかと考えていま す。 ・Deploying the standalone User Operator https://strimzi.io/docs/operators/0.18.0/using.html#deploying-the-user-operator-standalone-str “STRIMZI_NAMESPACE to the Kubernetes namespace in which you want the operator to watch for KafkaUser resources.” もし不明瞭な点がありましたら、 @suzukiry25までご連絡お願いできければと思います。