Skip to content

Commit

Permalink
Updating documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
mmolimar committed Jun 18, 2017
1 parent 4daccd2 commit 3617fd4
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# VKitM - Virtual Kafka in the Middle [![Build Status](https://travis-ci.org/mmolimar/vkitm.svg?branch=master)](https://travis-ci.org/mmolimar/vkitm)[![Coverage Status](https://coveralls.io/repos/github/mmolimar/vkitm/badge.svg?branch=master)](https://coveralls.io/github/mmolimar/vkitm?branch=master)
VKitM is a native [Apache Kafka](https://kafka.apache.org/) proxy using the native Kafka protocol.

Its name is due to how has been designed: the application acts as an intermediary between the Kafka client
VKitM is a [Apache Kafka](https://kafka.apache.org/) proxy which uses the native Kafka protocol.

Its name is due to how it has been designed: the application acts as an intermediary between the Kafka client
and the Kafka cluster, modifying the requests and responses from/to the client.
Actually, the client thinks that the connection is to a Kafka cluster (by now, with one node) and
doesn't now what's behind (an entirely Kafka cluster).
doesn't know what's behind (an entirely Kafka cluster).

Right now, the implementation includes a subset of the [API Keys](https://kafka.apache.org/protocol#protocol_api_keys)
but can produce and consume messages.
Expand All @@ -21,7 +22,7 @@ but can produce and consume messages.

**DISCLAIMER:** This application has been implemented in order to provide another option when a proxy
is required. If you use VKitM with a different purpose from the one has been designed it's under your own
responsability.
responsibility.

## Motivation

Expand All @@ -31,11 +32,11 @@ REST Proxy is [this one](https://github.com/confluentinc/kafka-rest).
However, most of them lack of some of the following features I'd like to provide in VKitM:

- Use the native Kafka protocol directly, **improving the performance**.
- To be able to **modify the messages from the clients on the fly** when we cannot do it in the client itself
- Be able to **modify the messages from the clients on the fly** when we cannot do it in the client itself
(due to business cases or whatever) including **[interceptors](https://cwiki.apache.org/confluence/display/KAFKA/KIP-42%3A+Add+Producer+and+Consumer+Interceptors)**.
- Define **custom ACLs** to complement those that already exist in the Kafka Cluster.
- Change the **kind of protocol** in your clients (secured or not). I.e.: using SSL connection from the clients to VKitM
and from the VKitM to Kafka brokers in plaintext (or vice versa) or even change the certificates they use.
- Define **custom ACLs** to complement those that already exist (or maybe not) in the Kafka Cluster.
- Change the **kind of protocol** in your clients (secured or not). I.e.: using TLS connection from the clients to VKitM
and from VKitM to Kafka brokers in plaintext (or vice versa) or even change the certificates they use.

## Getting started

Expand All @@ -47,11 +48,23 @@ However, most of them lack of some of the following features I'd like to provide

**NOTE**: modify ``src/main/resources/application.conf`` file, if applies, to your custom configuration.

## Docker

You can run VKitM inside a Docker container. Use the image hosted in [Docker Hub](https://hub.docker.com/r/mmolimar/vkitm/)
or just build your own one.

### Building the image ###
docker build -t mmolimar/vkitm --build-arg VERSION=<VERSION> .

### Run VKitM inside a container ###
docker run -p <HOST_PORT>:<CONTAINER_PORT> -v /path/to/conf/directory:/vkitm/conf mmolimar/vkitm

**NOTE**: path ``/path/to/conf/directory`` must contain a file named ``application.conf`` with the VKitM configuration.

## Future work

- Implement most of the Kafka protocol API Keys.
- Develop a VKitM cluster, avoiding SPOF (Single Point Of Failure) which now exists.
- 'Dockerizer' the app.

## Contribute

Expand Down

0 comments on commit 3617fd4

Please sign in to comment.