Я развертываю Kafka-connect в Google Kubernetes Engine (GKE), используя cp-kafka-connect Диаграмма руля в распределенном режиме.
Работающий кластер Kafka с брокером и zookeeper уже работает на том же кластере GKE. Я понимаю, что могу создавать соединители, отправляя почтовые запросы конечной точке http://localhost:8083/connectors
, как только она станет доступна. Однако контейнер Kafka-connect переходит в состояние RUNNING, а затем начинает загружать файлы JAR, и пока все файлы JAR не будут загружены, указанная выше конечная точка недоступна.
Я ищу способ автоматизировать шаг вручную exec
модуль, проверьте, готова ли конечная точка, а затем отправьте запросы на публикацию. У меня есть сценарий оболочки, у которого есть куча curl -X POST
запросов к этой конечной точке для создания соединителей, а также файлы конфигурации для этих соединителей, которые прекрасно работают в автономном режиме (с использованием демонстрации платформы Confluent в этом confluent blog ).
Теперь существует только два способа создания соединителя:
- Каким-то образом определить, когда контейнер фактически готов (когда конечная точка начала прослушивание), а затем запустить сценарий оболочки. содержащий запросы curl
- ИЛИ использовать файлы конфигурации, как мы делаем это в автономном режиме (Пример:
$ <path/to/CLI>/confluent local load connector_name -- -d /connector-config.json
)
Какой из вышеперечисленных подходов лучше?
Можно ли вообще использовать второй подход (файлы конфигурации) в распределенном режиме?
- Если ДА: Как это сделать?
- Если NO: Как успешно выполнить то, что объясняется в первом подходе?
РЕДАКТИРОВАТЬ: Со ссылкой на его 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
- это скрипт, смонтированный извне, содержащий группу запросов POST, использующих CURL для API-интерфейс Kafka-connect.