Как настроить почтовый веб-крючок из BitBucket в Kafka REST Proxy?
Я пытаюсь опубликовать данные (полезную нагрузку) из BitBucket на мой экземпляр Kafka в случае каких-либо событий BitBucket (например, Pushed
, Forked
, PR creating
, Addition
/ Modification
/ Deletion
пиар-комментарии и т. д.)
Итак, я настроил rest-прокси Kafka, но я не могу отправить данные из BitBucket в Kafka, так как Content-Type
требуется опубликовать данные с использованием прокси Kafka REST application/vnd.kafka.json.v2+json
и полезная нагрузка BitBucket имеет заголовок, установленный как application/json
(Я использую стандартный BitBucket webhook, настроенный на Repository
уровень).
Я настроил Webhook на уровне хранилища следующим образом:
Это запрос, который запускается из WebHok BitBucket:
И ответ, который я получаю от REST Proxy Кафки, таков:
Я думал о следующих решениях:
Я могу написать простой веб-сервер, который выступает посредником между двумя системами (BitBucket и Kafka). Сервер может выступать в качестве промежуточного прокси-сервера и получать входящие запросы от веб-крючка BitBucket и публиковать его на
Kafka REST proxy
используя соответствующий заголовок (application/vnd.kafka.json.v2+json
).Это решение работает, но минусами являются обслуживание другого сервера (написано мной). Кроме того, он может иметь проблемы с масштабируемостью, поскольку BitBucket начинает часто запускать веб-хуки (100 с в секунду в часы пик, поскольку у нас только один экземпляр BitBucket и около 3500 разработчиков).
Я могу использовать плагин BitBucket, который работает как
webhook
и который позволяет мне настраивать и изменять заголовки на лету. Это решение, которого я стремлюсь достичь. Не требует дополнительного сервера для обслуживания.
Есть ли плагин BitBucket, который я могу установить с рынка, который позволит мне настроить заголовок при запуске веб-крюка?
PS - извиняюсь за написание такого длинного вопроса. Эти два решения просто с моей головы. Я не удивлюсь, если будет доступно лучшее решение для интеграции BitBucket с Kafka. Также, пожалуйста, дайте мне знать, если вопрос остается неясным. В этом случае я попытаюсь прояснить свой вопрос по-другому.
Спасибо
0 ответов
Вы можете использовать Pipedream для приема веб-запросов от Bitbucket, изменить Content-Type
заголовок к application/vnd.kafka.json.v2+json
и перешлите запрос к вашему REF прокси Kafka. Запуск таких конвейеров на Pipedream бесплатный.
Я создал пример конвейера, который показывает вам, как это работает. Он принимает полезную нагрузку HTTP, отправленную из Bitbucket - $event.body
- и использует немного кода Node.js для пересылки запроса на другую конечную точку HTTP.
В моем случае я просто добавил URL-адрес RequestBin, чтобы вы могли видеть где-нибудь POST размещенные тело и заголовки - посмотрите пример запроса, который я отправил сюда. Разверните раздел Заголовки этого запроса и обратите внимание на Content-Type
заголовок правильно установлен application/vnd.kafka.json.v2+json
,
Если вы разветвляете конвейер выше (просто нажмите кнопку Fork в правом верхнем углу), он должен сгенерировать пользовательский URL, специфичный для вашего конвейера. Добавьте этот URL-адрес в качестве нового URL-адреса Bitbucket webhook, привязанного к вашему репозиторию, и вы должны начать видеть новые события.
Предполагается, что ваш URL-адрес прокси-сервера Kafka REST общедоступен. Весь код для конвейеров Pipedream является общедоступным, поэтому, если вы хотите сохранить частную конечную точку прокси-сервера KEST REF Proxy, вы можете создать переменную среды и сослаться на нее в коде Node.js, заменив URL-адрес RequestBin значением этой переменной среды.
Например, я мог бы создать переменную среды с именем KAFKA_REST_ENDPOINT
и заменить:
url: 'https://entygbild98b.x.pipedream.net'
с участием
url: process.env.KAFKA_REST_ENDPOINT
Дайте мне знать, если это поможет или у вас есть какие-либо вопросы.