如何配置从BitBucket到Kafka REST Proxy的发布Webhook?

时间:2019-05-26 15:03:26

标签: git apache-kafka bitbucket webhooks kafka-rest

在发生任何BitBucket事件(例如PushedForkedPR creatingAddition的情况下,我试图将数据(有效载荷)从BitBucket发布到我的Kafka实例/ Modification / Deletion的PR评论等)

因此,我已经设置了Kafka rest-proxy,但是我无法将数据从BitBucket发送到Kafka,因为使用Kafka REST proxy发布数据所需的Content-Typeapplication/vnd.kafka.json.v2+json,而BitBucket的有效负载的标头设置为application/json(我正在使用在Repository级别配置的默认BitBucket Webhook)。

我是通过这种方式在存储库级别配置Webhook的: enter image description here

这是从BitBucket的Webhook触发的请求:

enter image description here

我从Kafka的REST Proxy得到的响应是:

enter image description here

我已经考虑过以下解决方案:

  1. 我可以编写一个简单的Web服务器,充当两个系统(BitBucket和Kafka)之间的中介程序。服务器可以充当中间代理,并使用适当的标头(Kafka REST proxy)从BitBucket的webhook捕获传入的请求并将其发布到application/vnd.kafka.json.v2+json

    此解决方案有效,但缺点是维护另一台服务器(由我编写)。而且,随着BitBucket开始频繁触发网络钩子(高峰时段每秒100秒钟,因为我们只有一个BitBucket实例并且我们有大约3500个开发人员),它可能会出现可伸缩性问题

  2. 我可以使用 BitBucket插件,该插件可以作为webhook使用,它允许我动态配置和更改标头。 这是我正在努力实现的解决方案。也不需要维护额外的服务器。

是否有一个BitBucket插件,可以从市场上安装它,使我可以在网络挂接时配置标头     被触发

P.S。 -很抱歉写这么长的问题。这两种解决方案都是从头开始。如果有更好的解决方案将BitBucket与Kafka集成,我不会感到惊讶。另外,如果问题不清楚,请告诉我。在这种情况下,我将尝试以其他方式澄清我的问题。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用Pipedream接受来自Bitbucket的Webhook请求,将Content-Type标头修改为application/vnd.kafka.json.v2+json,然后将请求转发到您的Kafka REST代理。在Pipedream上运行这样的管道是免费的。

我创建了一个example pipeline,向您展示了它是如何工作的。它接收从Bitbucket($event.body)发送的HTTP有效负载,并使用一点Node.js代码将请求转发到另一个HTTP端点。

就我而言,我刚刚添加了一个RequestBin URL,以便您可以看到正文和标头张贴在某个地方—看看我发送的here请求示例。展开该请求的“标头”部分,注意Content-Type标头已正确设置为application/vnd.kafka.json.v2+json

如果您在上方分叉管道(只需单击右上角的Fork按钮),它将生成特定于您的管道的自定义URL。将该URL添加为与您的回购绑定的新Bitbucket Webhook URL,您应该开始看到新事件通过。

这假定您的Kafka REST代理URL可公开访问。 Pipedream管道的所有代码都是公开的,因此,如果要将Kafka REST Proxy端点保持私有,则可以创建一个environment variable并在Node.js代码中引用该代码,将RequestBin URL替换为该值环境变量。

例如,我可以创建一个名为KAFKA_REST_ENDPOINT的环境变量并替换:

url: 'https://entygbild98b.x.pipedream.net'

使用

url: process.env.KAFKA_REST_ENDPOINT

让我知道这是否有帮助,或者您还有其他问题。