Azure Kubernetes Service(ASK)上でConfluent Platformを構築してみる
はじめに
Kafkaのクラスターを構成してDeployすることは結構複雑でその分時間もかかります。
しかも、構成中にエラーが発生すればそれへの対処も必要となってさらに時間を費やすことになります。そこで、ConfluentがKubernetes環境へイベントストリーミングプラットフォームとして複数のコンポーネントを一度にデプロイする自動化ツールでオペレータというものを使用してAKS上にConfluent Platformを構築してみようと思います。
参照:https://docs.confluent.io/platform/current/tutorials/examples/kubernetes/aks-base/docs/index.html
このシナリオで構築されるコンポーネント
-AKSで実行されるKubernetesクラスタ
-シングルノードのZookeeper
-シングルノードのKafka
-シングルノードのスキーマレジストリ
-Confluent コントロールセンター(GUI)
-シングルノードのKafkaコネクタ
-Kafka-connect-datagenというモックデータを生成するインスタンス
前提条件
今回はシナリオ実行前に以下のアプリケーションとライブラリをインストールしています。
アプリケーション | 今回使用したバージョン | 参考URL |
---|---|---|
kubectl | 1.18.0 | https://kubernetes.io/docs/tasks/tools/ |
helm | 3.1.2 | https://github.com/helm/helm/releases/tag/v3.1.2 |
az | 2.10.1 | https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest |
セットアップ
ここから順を追ってDeployしていきます。
ターミナルからAzureCLIを介してログインします。
az login
Azureサブスクリプションを一覧表示してこれから使用するサブスクリプションを特定します。
az account list -o table
AzureCLIを介してアクティブなAzureサブスクリプションを設定します。
az account set --subscription {{ azure subscription name }}
azure subscription nameの部分はご利用の環境に応じて読み替えて下さい。
Azureリソースグループを一覧で表示しこの例で使用するリソースグループを確認します。
az group list -o table
Confluentサンプルリポジトリのクローンを作成しディレクトリをaks-baseディレクトリに移動します。
git clone https://github.com/confluentinc/examples.git
cd examples/kubernetes/aks-base
次の手順はAKSでKubernetesクラスタを作成します。もし、既に使用するクラスタがある場合はこの手順をスキップして「検証」のセクションへ移動してください。
新しいクラスタが作成されるAzureリソースグループを選択します。
ここではAZ_RESOURCE_GROUPを変数として設定します。
以下を実行してクラスタを作成します。(環境に依存しますが、大体4~5分程度かかります。)
export AZ_RESOURCE_GROUP={{ azure resource group name }}
azure resource group nameの部分はご利用の環境に応じて読み替えて下さい。
make aks-create-cluster
検証
Kubernetesクラスタを制御するためにkubectlを使用します。ローカルでkubectlが正しく構成されていることを確認するためには次のコマンドを実行します。
kubectl config current-context
実行
Confluent Platformのデモ環境を展開します。(環境に依存しますが、大体7~8分程度かかります。)
make demo
展開が終わると最後に以下のメッセージが出力されます。
✔ AKS Base Demo running
確認
KubernetesのDeployを確認します。
Deployされたコンポーネントは次の方法で表示できます。
kubectl -n operator get all
この例ではデフォルトの変数値を使用していて、以下のような結果が表示されます。
CLIでConfluent Platformを確認する。
この例ではKubernetes Ingressなしでデプロイされます。つまり、Kubernetesクラスタ内のConfluent Platformリソースに外部クライアントからアクセスすることはできません。ここではConfluent Platformサービスへのネットワーク接続を備えたclient-consoleを使用できるPodをDeployします。
kubectl -n operator exec -it client-console -- bash
ここから標準のKafkaコマンドを実行してクラスタを検証できます。
kafka-topics --bootstrap-server kafka:9071 --command-config /etc/kafka-client-properties/kafka-client.properties --list
以下console consumerでモックデータジェネレータの出力を表示できます。
kafka-console-consumer --bootstrap-server kafka:9071 --consumer.config /etc/kafka-client-properties/kafka-client.properties --topic clicks
Confluent ControlCenterを確認する
Confluent Control Centerを実行(表示)するには、ローカルマシンとConfluent Control Centerサービスを実行しているKubernetesのPod間でネットワーク接続が利用可能である必要があります。このため、次のkubectlコマンドを使用してローカルホストとConfluent Control Center間のポート転送で接続します。
kubectl -n operator port-forward controlcenter-0 12345:9021
次にWebブラウザでhttp://localhost:12345 を開くと、操作可能なKafkaクラスタ、スキーマレジストリ、Kafka ConnectなどがConfluent Control Centerに表示されます。
構築した環境の破棄
クラスタ内のConfluent Platformコンポーネントを破棄するには以下を実行します。(環境に依存しますが、大体4~5分くらいかかります。)
make destroy-demo
次の方法で、すべてのリソースが削除されていることを確認できます。
kubectl -n operator get all
まとめ
KafkaをKubernetes環境へDeployすることをConfluentの機能であるオペレータを使って試してみました。多少の事前の準備を必要としますが、マルチステージング環境などでKafkaを運用する場合は本番環境へのDeployをスムーズに行えるなどメリットは大きいと思いました。
とりあえず概要はつかめたので、次はオンプレのKubernetes環境へのDeployをしたいと思います。
Author And Source
この問題について(Azure Kubernetes Service(ASK)上でConfluent Platformを構築してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/Alex-hiro/items/3769d6052f216791ded4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .