名称包含斜杠/的Kafka Connector无法通过REST API删除问题求助
问题根因
你遇到的是两层编码解码冲突导致的404报错:
- curl默认会对URL路径做归一化处理,会提前把你手动编码的
%2F解码为/ - OCP的Route/入口代理默认也会自动解码URL路径中的
%2F为/,最终发到Kafka Connect服务的请求路径变为/connectors/myconnector/first,无法匹配连接器路由规则。
可行解决方案
方案1:优先尝试(无需改配置)
给curl增加--path-as-is参数,强制curl不修改URL路径,原样发送编码后的地址:
CONNECTOR_NAME="myconnector%2Ffirst" curl -X DELETE --path-as-is "https://localhost/connectors/${CONNECTOR_NAME}"
调用前可以先执行GET请求验证是否能正常获取连接器信息,确认路径生效:
curl --path-as-is "https://localhost/connectors/${CONNECTOR_NAME}"
方案2:方案1无效时使用(需修改Connect配置)
如果方案1仍然返回404,说明OCP的Route层做了强制解码,需要修改Kafka Connect的配置以支持斜杠解析:
- 编辑Connect集群的
connect-distributed.properties配置文件,新增配置项:
rest.uri.allow.encoded.slash=true
- 重启Kafka Connect集群使配置生效
- 重新执行方案1的curl命令即可删除成功。
方案3:应急方案
如果不方便修改服务配置,可以使用Confluent CLI操作,CLI会自动处理名称中的特殊字符编码:
# 先配置CLI连接到你的Connect集群 confluent connect cluster use <你的Connect集群ID> # 直接传带斜杠的连接器名称删除 confluent connect connector delete "myconnector/first"
内容的提问来源于stack exchange,提问作者pyarapani
相关产品推荐
相关产品推荐

