分散モードでcp- kafka - connectHelmチャートを使用して、Kafka-connectをGoogle Kubernetes Engine(GKE)にデプロイしています。
ブローカーとzookeeperを備えた稼働中のKafkaクラスターは、同じGKEクラスターですでに実行されています。http://localhost:8083/connectors
利用可能になったらエンドポイントに投稿リクエストを送信することでコネクタを作成できることを理解しています。ただし、Kafka-connectコンテナはRUNNING状態になり、jarファイルのロードを開始し、すべてのjarファイルがロードされるまで、上記のエンドポイントに到達できません。
exec
ポッドを手動で自動化する方法を探しています。エンドポイントの準備ができているかどうかを確認してから、投稿リクエストを送信します。curl -X POST
コネクタを作成するためのこのエンドポイントへの多数のリクエストを含むシェルスクリプトがあり、スタンドアロンモードで正常に機能するこれらのコネクタの構成ファイルもあります(このconfluentブログのConfluentプラットフォームショーを使用)。
現在、コネクタを作成する方法は2つしかありません。
$ <path/to/CLI>/confluent local load connector_name -- -d /connector-config.json
)上記のアプローチのどれが良いですか?
2番目のアプローチ(構成ファイル)は分散モードでも実行できますか?
編集:彼のgithubの問題を参照して(以下の@ cricket_007の回答に感謝します)、エンドポイントの準備ができた後にコンテナコマンドとコネクタが作成されたときに以下を追加しました:
...
command:
- /bin/bash
- -c
- |
/etc/confluent/docker/run &
echo "Waiting for Kafka Connect to start listening on kafka-connect "
while : ; do
curl_status=`curl -s -o /dev/null -w %{http_code} http://localhost:8083/connectors`
echo -e `date` " Kafka Connect listener HTTP state: " $curl_status " (waiting for 200)"
if [ $curl_status -eq 200 ] ; then
break
fi
sleep 5
done
echo -e "\n--\n+> Creating Kafka Connector(s)"
/tmp/scripts/create-connectors.sh
sleep infinity
...
/tmp/scripts/create-connectors.sh
Kafka-connectAPIへのCURLを使用して一連のPOSTリクエストを含む外部にマウントされたスクリプトです。
confluent local
KubernetesのようなリモートConnectクラスターとは相互作用しません。
Kafka Connect RESTAPIを参照してください
クラスタで実行されている他のRESTfulAPIと同じように接続します(たとえば、Nodeport、またはIngress / API Gatewayを介して)
上記のエンドポイントに到達できません。
Localhostは、コマンドを入力する物理マシンであり、リモートGKEクラスターではありません。
どういうわけか、コンテナが実際にいつ準備ができているかを特定します
Kubernetesヘルスチェックがその責任を負います
kubectl get services
コネクタを作成する方法は2つだけです
それは真実ではない。クラスター内でLandoopのKafkaConnectUIまたはConfluentControl Centerを追加で実行して、ポイントアンドクリックすることもできます。
ただし、ローカル構成ファイルがある場合は、APIと対話するコードを作成することもできます
または、この問題のPRを作成できるかどうか試してみてください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加