| commit | ea9e54c48b1c80f5ebec16c13f576657f6d65c19 | [log] [tgz] |
|---|---|---|
| author | Marcin Czech <maczech@gmail.com> | Thu Jan 20 01:49:50 2022 +0100 |
| committer | Marcin Czech <maczech@gmail.com> | Mon Jan 24 20:26:20 2022 +0000 |
| tree | eb05a887290ebc288a24cf4e1ff76dde44d37c86 | |
| parent | 4eb88f21fde3de089e314ff94f6d39c292f1e84f [diff] |
Use Kafka REST Proxy id to subscribe to the correct instance
When using a Kafka REST Proxy with multiple instances behind a
workload balancer, the consumers are allocated on one of the
allocated instances. The Kafka REST client needs to understand
which one is the instance that the client should talk to.
For deployments that can use workload balancers with sticky
sessions, there isn't any logic needed on the client side, because
the cookies allocated and stored on the client would do the job.
However, when using a standard K8s deployment[1], the sticky
session allocation isn't an option and any of the incoming
traffic may reach any of the pods.
Kafka REST Proxy allows with this change to specify the REST_PROXY_ID
with the placeholder ${rest_proxy_id} in the API URL, to help
redirecting the calls to the correct instance.
Example:
[plugin "events-kafka"]
restApiUri = http://kafka-rest:8080/${kafka_rest_id}
[1] https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
Change-Id: I396c3bc759ee05547e8c16cb4806b4fea63b833c
This plugins allows to define a distributed stream of events published by Gerrit.
Events can be anything, from the traditional stream events to the Gerrit metrics.
This plugin requires Gerrit 2.13 or laster.
linuxjava-1.8BazelKafka plugin can be build as a regular ‘in-tree’ plugin. That means that is required to clone a Gerrit source tree first and then to have the Kafka plugin source directory into the /plugins path. Additionally, the plugins/external_plugin_deps.bzl file needs to be updated to match the Kafka plugin one.
git clone --recursive https://gerrit.googlesource.com/gerrit git clone https://gerrit.googlesource.com/plugins/events-kafka gerrit/plugins/events-kafka cd gerrit rm plugins/external_plugin_deps.bzl ln -s ./events-kafka/external_plugin_deps.bzl plugins/.
To build the events-kafka plugins, issue the command from the Gerrit source path:
bazel build plugins/events-kafka
The output is created in
bazel-genfiles/plugins/events-kafka/events-kafka.jar
Assuming a running Kafka broker on the same Gerrit host, add the following settings to gerrit.config:
[plugin "events-kafka"]
bootstrapServers = localhost:9092