我正在使用Kafka-connect Helm图表在分布式模式下在Google Kubernetes Engine(GKE)上部署cp-kafka-connect。
具有代理和Zookeeper的可运行的Kafka集群已经在同一GKE集群上运行。我知道可以通过向http://localhost:8083/connectors
端点发送发布请求来创建连接器。
但是,Kafka-connect容器进入RUNNING状态,然后开始加载jar文件,直到所有jar文件加载完毕,上述端点才无法访问。
我正在寻找一种自动执行以下步骤的方法:手动exec
吊舱,检查端点是否准备就绪,然后发送发布请求。我有一个Shell脚本,该脚本具有到该端点的一堆curl -X POST
请求以创建连接器,并且还具有这些连接器的配置文件,这些文件在独立模式下可以正常工作(使用此confluent blog中的Confluent平台显示)
现在只有两种创建连接器的方法:
$ <path/to/CLI>/confluent local load connector_name -- -d /connector-config.json
)以上哪种方法更好?
第二种方法(配置文件)甚至可以在分布式模式下使用吗?
编辑: 关于他的github issue(由于下面的@ 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
是一个外部安装的脚本,其中包含使用CURL到Kafka-connect API的一堆POST请求。
答案 0 :(得分:1)
React-Router
不与远程Connect集群(例如Kubernetes中的一个集群)交互。
您将像在集群中运行的任何其他RESTful api一样连接到它(例如,通过Nodeport或Ingress / API网关)
上述端点不可访问。
Localhost是您要在其中键入命令的物理计算机,而不是远程GKE群集
以某种方式确定何时实际准备好容器
Kubernetes健康检查对此负责
const PrivateRoute = ({ component: Component, ...rest }) => {
const [auth, setAuth] = useState(false);
useEffect(() => {}, [auth])
useEffect(() => {
// send jwt to API to see if it's valid
let token = localStorage.getItem("token");
if (token) {
fetch("/protected", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ token })
})
.then((res) => {
return res.json()
})
.then((json) => {
if (json.success) {
setAuth(true);
}
})
.catch((err) => {
setAuth(false);
localStorage.removeItem("token");
});
}
}, [])
return (<Route {...rest}
render={(props) => {
return auth ? <Component {...props} /> : <Redirect to="/login" />
}} />)
}
}
只有两种创建连接器的方式
那不是事实。您可以在集群中另外运行Landoop的Kafka Connect UI或Confluent Control Center来指向并单击。
但是,如果您有本地配置文件,还可以编写代码以与API交互
或者尝试看看您是否可以针对此问题进行公关