■ はじめに
https://dk521123.hatenablog.com/entry/2023/04/21/000000
の際に、Apache Kafka を AWS 上で環境構築する際に 「Amazon EKS(KubernetesのマネージドAWSサービス)」をあげたが Kubernetes上でApache Kafka を構築するのに「Strimzi」ってのが あるらしいので、調べてみた。
目次
【1】Strimzi 1)ライセンス 2)公式サイト 【2】環境設定 1)前提条件 2)設定手順
【1】Strimzi
* Kubernetes上で Kafka クラスタを管理するオープンソースの Kubernetes Operator
特徴
* Kafkaの構成要素をKubernetesのカスタムリソース(Custom Resource; CR)で定義 * マニフェストファイルでKafkaクラスタのコンポーネントを管理できる * Topicの作成・更新・認証ユーザの作成・削除といったオペレーションも カスタムリソースで操作可能
1)ライセンス
* Apache 2.0
2)公式サイト
https://strimzi.io/
Quick Starts
https://strimzi.io/quickstarts/
Download
https://github.com/strimzi/strimzi-kafka-operator/releases/
YouTubeチャンネル
https://www.youtube.com/@Strimzi
【2】環境設定
1)前提条件
* Kubernetes / minikube がインストールされていること => ローカル上で設定したい場合は、以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2023/05/07/214515
[0] 確認
# Validate minikube minikube version # Validate kubectl kubectl version
2)設定手順
https://strimzi.io/quickstarts/
に従ってやっていく。 ちなみに、公式から動画も出ている。
https://youtu.be/1qO2qGuJNQI?t=5
[1] Kubernetesクラスタ開始
# Minikube の稼働状況を確認 minikube status # 起動していない場合、以下を実行 # 2GB default memory isn't always enough minikube start --memory=4096
[2] Strimzi のインストール
# Step1: Namespace「kafka」を作成 kubectl create namespace kafka # 確認 kubectl get namespace # NAME STATUS AGE # kafka Active 5m32s # Step2: Strimzi のマニフェストファイルから、CRDを作成 kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka
https://strimzi.io/install/latest?namespace=kafka
# Podの確認 (確認できたら Ctrl+C) kubectl get pod -n kafka --watch # 全Podの確認 (確認できたら Ctrl+C) kubectl get pods -n kafka -w # Deploymentのログ確認 (確認できたら Ctrl+C) kubectl logs deployment/strimzi-cluster-operator -n kafka -f
[3] Apache Kafkaクラスタ CR(Custom Resource)の適用
# Apply the `Kafka` Cluster CR file kubectl apply -f https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml -n kafka
https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml
https://github.com/strimzi/strimzi-kafka-operator/tree/0.34.0/examples/kafka
# KafkaクラスターがReady状態になるのを待機 kubectl wait kafka/my-cluster --for=condition=Ready --timeout=600s -n kafka # 時間内にReadyになれば、以下の結果が表示されます。 # kafka.kafka.strimzi.io/my-cluster condition met
[3] メッセージの送信受信を試す
# 別ターミナルで以下を実行 # Step1: メッセージの送信 kubectl -n kafka run kafka-producer -ti --image=quay.io/strimzi/kafka:0.34.0-kafka-3.4.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic If you don't see a command prompt, try pressing enter. # <Enter>キー押下 # 送信したいメッセージを記述する > Hello > World!! > <Ctrl+C> # Step2: メッセージの受信 kubectl -n kafka run kafka-consumer -ti --image=quay.io/strimzi/kafka:0.34.0-kafka-3.4.0 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning If you don't see a command prompt, try pressing enter. # <Enter>キー押下 (しばらく待ってみて、Step1のメッセージが表示されていることを確認) <Ctrl+C>
[4] Strimzi クラスタの削除
# 一旦、全て片付けたい場合は、以下のコマンドを実行 kubectl -n kafka delete -f 'https://strimzi.io/install/latest?namespace=kafka'
参考文献
https://thinkit.co.jp/article/18133
https://recruit.gmo.jp/engineer/jisedai/blog/deploy_kafka_streaming_data_platform_on_kubernetes_using_strimzi/
https://rheb.hatenablog.com/entry/three_things_of_strimzi
https://qiita.com/hisato_imanishi/items/deba525f466cce1ea659
https://www.redhat.com/ja/topics/integration/why-run-apache-kafka-on-kubernetes
https://access.redhat.com/documentation/ja-jp/red_hat_amq_streams/2.1/html/configuring_amq_streams_on_openshift/assembly-operators-str
Apache Kafka on K8s (Strimzi) をコントロールする Cruise Control | by Kenta Kosugi | Medium
https://developer.mamezou-tech.com/blogs/2022/05/25/strimzi-kafka-operators/
https://literalice.com/post/strimzi/
https://zenn.dev/esaka/articles/fec9d7f2a477bd
関連記事
Apache Kafka ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/23/235534
Apache Kafka ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/04/24/153846
Apache Kafka ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/26/103421
Apache Kafka ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/01/000000
Apache Kafka ~ Kafka Connect ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
Apache Kafka ~ Kafka Connect / PostgreSQL ~
https://dk521123.hatenablog.com/entry/2023/05/02/233806
Scala ~ Apache Kafka / Producer ~
https://dk521123.hatenablog.com/entry/2023/04/27/235703
Scala ~ Apache Kafka / Consumer ~
https://dk521123.hatenablog.com/entry/2023/04/28/014737
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
Kubernetes ~ 基本編 / minikube ~
https://dk521123.hatenablog.com/entry/2023/05/07/214515
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000
Amazon MSK (Managed Streaming for apache Kafka)
https://dk521123.hatenablog.com/entry/2023/04/21/000000