## 1. Project Overview & Quickstart (strimzi/bridge)

[](https://github.com/strimzi/strimzi-kafka-bridge/actions/workflows/build.yml?query=branch%3Amain)
[](https://github.com/strimzi/strimzi-kafka-bridge/releases/latest)
[](https://search.maven.org/artifact/io.strimzi/kafka-bridge)
[](http://www.apache.org/licenses/LICENSE-2.0)
[](https://twitter.com/strimziio)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fstrimzi%2Fstrimzi-kafka-bridge?ref=badge_shield)
[](https://snyk.io/test/github/strimzi/strimzi-kafka-bridge)

# HTTP bridge for Apache Kafka®

This project provides a software component which acts as a bridge between [HTTP 1.1 (Hypertext Transfer Protocol)](https://tools.ietf.org/html/rfc2616) and an [Apache Kafka®](https://kafka.apache.org/) cluster.

It provides a different way to interact with Apache Kafka because the latter natively supports only a custom (proprietary) protocol.
Thanks to the bridge, all clients which can speak HTTP 1.1 protocol can connect to Apache Kafka cluster in order to send and receive messages to / from topics.

## Architectures support

| Architecture | Status        | Tested  |
|--------------|---------------|---------|
| **amd64**    | **Supported** | **yes** |
| **arm64**    | **Supported** | _no_    |
| **ppc64le**  | **Supported** | _no_    |
| **s390x**    | **Supported** | **yes** |

## Community Testing for Linux on IBM Z s390x architecture

[](https://ibmz-ci.osuosl.org/job/Strimzi_Kafka_Bridge_IBMZ_CI/)

_Note: This badge represents a community-led initiative and is not officially endorsed by the Strimzi project maintainers._

## Running the bridge

### On Kubernetes and OpenShift

Use the [Strimzi Kafka operator](https://strimzi.io/docs/operators/latest/deploying.html) to deploy the Kafka Bridge with HTTP support on Kubernetes and OpenShift.

### On bare-metal / VM

Download the ZIP or TAR.GZ file from the [GitHub release page](https://github.com/strimzi/strimzi-kafka-bridge/releases) and unpack it.
Afterwards, edit the `config/application.properties` file which contains the configuration.
Once your configuration is ready, start the bridge using:

```bash
bin/kafka_bridge_run.sh --config-file config/application.properties
```

Kafka Bridge releases are also available to [download](https://strimzi.io/downloads/) from the Strimzi website.

## Kafka Bridge documentation

The [Kafka Bridge documentation](https://strimzi.io/docs/bridge/latest/) provides information on getting started with the Kafka Bridge.

The source files for the Kafka Bridge documentation are maintained in the [`documentation`](/documentation) folder.
The documentation is maintained in `.adoc` files.
The `.adoc` files for the API reference section (`documentation/book/api`) are generated from descriptions in the source OpenAPI JSON file (`src/main/resources/openapiv2.json`), so they must not be edited directly.

If you spot something that needs updating or changing in the Kafka Bridge documentation, you can open an issue or open a PR and contribute directly. 

For more information on contributing to the Strimzi documentation, see the [Strimzi Documentation Contributor Guide](https://strimzi.io/contributing/guide/).

## Getting help

If you encounter any issues while using Strimzi Kafka Bridge, you can get help through the following methods:

- [Strimzi Users mailing list](https://lists.cncf.io/g/cncf-strimzi-users/topics)
- [#strimzi channel on CNCF Slack](https://slack.cncf.io/)

## Contributing

You can contribute by:
- Raising any issues you find using Strimzi Kafka Bridge
- Fixing issues by opening Pull Requests
- Improving documentation
- Talking about Strimzi Kafka Bridge

All bugs, tasks or enhancements are tracked as [GitHub issues](https://github.com/strimzi/strimzi-kafka-bridge/issues). Issues which
might be a good start for new contributors are marked with ["good-start"](https://github.com/strimzi/strimzi-kafka-bridge/labels/good-start) label.

The [Building Strimzi Kafka Bridge](BUILDING.md) guide describes how to build Strimzi Kafka Bridge and how to test your changes before submitting a patch or opening a PR.

If you want to get in touch with us first before contributing, you can use:

- [Strimzi Dev mailing list](https://lists.cncf.io/g/cncf-strimzi-dev/topics)
- [#strimzi channel on CNCF Slack](https://slack.cncf.io/)

Learn more on how you can contribute on our [Join Us](https://strimzi.io/join-us/) page.

## License

Strimzi Kafka Bridge is licensed under the [Apache License](./LICENSE), Version 2.0

## Container signatures

From the 0.27.0 release, Strimzi Kafka Bridge containers are signed using the [`cosign` tool](https://github.com/sigstore/cosign).
Strimzi currently does not use the keyless signing and the transparency log.
To verify the container, you can copy the following public key into a file:

```
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET3OleLR7h0JqatY2KkECXhA9ZAkC
TRnbE23Wb5AzJPnpevvQ1QUEQQ5h/I4GobB7/jkGfqYkt6Ct5WOU2cc6HQ==
-----END PUBLIC KEY-----
```

And use it to verify the signature:

```
cosign verify --key strimzi.pub quay.io/strimzi/kafka-bridge:latest --insecure-ignore-tlog=true
```

## Software Bill of Materials (SBOM)

From the 0.27.0 release, Strimzi Kafka Bridge publishes the software bill of materials (SBOM) of our containers.
The SBOMs are published as an archive with `SPDX-JSON` and `Syft-Table` formats signed using cosign.
For releases, they are also pushed into the container registry.
To verify the SBOM signatures, please use the Strimzi public key:

```
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET3OleLR7h0JqatY2KkECXhA9ZAkC
TRnbE23Wb5AzJPnpevvQ1QUEQQ5h/I4GobB7/jkGfqYkt6Ct5WOU2cc6HQ==
-----END PUBLIC KEY-----
```

You can use it to verify the signature of the SBOM files with the following command:

```
cosign verify-blob --key cosign.pub --bundle <SBOM-file>.bundle --insecure-ignore-tlog=true <SBOM-file>
```

## 2. Official Technical Reference & Guides (strimzi/strimzi.github.io)

# Strimzi website

This repository contains the [Strimzi website](https://strimzi.io).

## Prerequisites

[Ruby](https://www.ruby-lang.org/en/) and [Rubygems](https://rubygems.org/) are needed in order to build the web site.

Install [bundler](https://bundler.io/)

    gem install bundler

## Build

In order to build and serve the web site locally, run :

    bundle install
    bundle exec jekyll serve

When running, the website is accessible at `localhost:4000`.

## Build using a container

To avoid needing to install Ruby, you can build and run the web site locally inside a container.
Run the following command:

    docker run --rm -v ${PWD}:/srv/jekyll -p 4000:4000 -it jekyll/jekyll jekyll serve

The build can take several minutes to complete.
When it's done, you'll see the message "Server running...".

**Note:** If you see the error `require': cannot load such file -- webrick (LoadError)`, add the following to the `Gemfile`:

    gem "webrick"

If you make this change, be sure not to check it in.

## Blog posts

We try to use the following process for blog posts:

1. You should start by [asking us](https://strimzi.io/join-us/#ask-for-help-and-help-others) whether your proposed subject is a good fit for the strimzi.io blog.
   The aim of this step is to prevent you wasting your time writing a post which isn't going to interest Strimzi users.
   If your proposal is not perfect from the off, we might suggest ways to make it more relevent to our audience.
   Even if we don't think it will be relevant we might be able to recommend a better site for your proposed content.
   
2. You write your post and open a PR.
   To start a new blog post, just create a new file in the `_posts` subdirectory and name it `<date>-<title>.md`. 
   For the date, you can use the current date (after your blog post is reviewed and approved, we will change it to the actual publishing date when merging the PR). 
   See [this blog post](https://strimzi.io/blog/2021/07/29/how-to-write-blog-posts-for-strimzi-blog/) for a detailed overview of the mechanics of writing a blog post.

   If this is your first blog post, please also add yourself to the [authors.yml](_data/authors.yml) file.

3. We'll do a content review, checking for technical accuracy, logical structure etc.
   Sometimes this can be an iterative process, but we'll try not to keep you waiting. 
   
4. Once the content is good we'll do a final review pass focussing on things like spelling and grammar.
   Don't worry if you're not a native English speaker; our main intent here isn't necessarily _perfect_ English, but to ensure the content is easily understood.

### Diagrams

You can include diagrams by adding images to `assets/images/posts` directory (the filename should start with the date of the post) and linking to them directly. 
Alternatively, you can enable [Mermaid](https://mermaid.js.org/) diagram rendering in you post's markdown. 
To do this add `mermaid: true` to your post's front matter, then tag your diagram code blocks with the `mermaid` language tag:
```markdown
---
layout: post
mermaid: true
---

```mermaid
flowchart TD
A --> B
B --> C
``` `
```

## Quick starts

[Strimzi quick starts](https://strimzi.io/quickstarts/) provide instructions for evaluating Strimzi using _Minikube_, _Kubernetes kind_ or _Docker Desktop_.

The source markdown files for the quick starts are maintained in the [`quickstarts`](/quickstarts) and [`/_includes/quickstarts`](/_includes/quickstarts) folders.

If you spot something that needs updating or changing in the quick starts, you can open an issue or open a PR and contribute directly. 

For more information on contributing to the Strimzi documentation, see the [Strimzi Documentation Contributor Guide](https://strimzi.io/contributing/guide/).

# Contributing

You can contribute by:

* Raising any issues you find using Strimzi
* Fixing issues by opening Pull Requests
* Improving documentation
* Talking about Strimzi

All bugs, tasks or enhancements are tracked as [GitHub issues](https://github.com/strimzi/strimzi-kafka-operator/issues). 
Issues which might be a good start for new contributors are marked with the ["good-start"](https://github.com/strimzi/strimzi-kafka-operator/labels/good-start) label.

The [Development Guide for Strimzi](https://github.com/strimzi/strimzi-kafka-operator/blob/main/development-docs/DEV_GUIDE.md) describes how to build Strimzi and how to test your changes before submitting a patch or opening a PR.

If you want to get in touch with us first before contributing, you can use:

* [#strimzi channel on CNCF Slack](https://slack.cncf.io/)
* [Strimzi Dev mailing list](https://lists.cncf.io/g/cncf-strimzi-dev/topics)

Learn more on how you can contribute on our [Join Us](https://strimzi.io/join-us/) page.