You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,23 +7,23 @@ _**Expose** your **Kafka** cluster outside your Minikube, Kind, or Docker Deskto
7
7
## What is Keksposé?
8
8
9
9
[Strimzi](https://strimzi.io) makes it easy to run [Apache Kafka](https://kafka.apache.org/) on Kubernetes.
10
-
But using the Kafka cluster from applications running outside of your Kubernetes cluster can be [challenging](https://strimzi.io/blog/2019/04/17/accessing-kafka-part-1/).
10
+
But using the Kafka cluster from applications running outside your Kubernetes cluster can be [challenging](https://strimzi.io/blog/2019/04/17/accessing-kafka-part-1/).
11
11
Strimzi tries to make it as easy as possible and supports several different ways how to _expose_ the Kafka cluster:
12
12
* Using Load Balancers
13
13
* Using Node Ports
14
14
* Using the Kubernetes Nginx Ingress controller
15
15
16
16
When running in production-grade Kubernetes environments, these usually work fine.
17
-
But when using a local Kubernetes cluster such as Minikube, Kind or Docker Desktop, these mechanisms are often not well-supported:
17
+
But when using a local Kubernetes cluster such as Minikube, Kind, or Docker Desktop, these mechanisms are often not well-supported:
18
18
* The local clusters often lack proper support for load balancers
19
19
* They often run inside additional virtual machines or containers and use complex networking so that node ports do not work out of the box
20
20
* While Ingress usually works, the installation of the right Ingress controller and its configuration is often complicated
21
21
22
22
One of the ways how applications are often exposed from local clusters is using port forwarding with `kubectl port-foward`.
23
23
But using port forwarding with Apache Kafka is not so simple because of its custom discovery protocol.
24
-
You need to forward ports for each brokers in the Kafka cluster.
24
+
You need to forward ports for each broker in the Kafka cluster.
25
25
And you need to make sure your advertised hosts and ports are correctly configured to the local address.
26
-
Keksposé makes it possible to use port forwarding with Apache Kafka with the help of [Kroxylicious](https://kroxylicious.io/) project that provides Kafka proxying capabilities.
26
+
Keksposé makes it possible to use port forwarding with Apache Kafka with the help of the [Kroxylicious](https://kroxylicious.io/) project that provides Kafka proxying capabilities.
27
27
28
28
## How does it work?
29
29
@@ -62,7 +62,7 @@ That allows it to provide native binaries to make it easier to run Keksposé.
62
62
63
63
### Installation
64
64
65
-
You can download one of the release binaries from one of the release and use it.
65
+
You can download one of the release binaries from one of the releases and use it.
66
66
67
67
### Configuration
68
68
@@ -78,24 +78,24 @@ Keksposé supports several parameters that can be used to configure it:
78
78
|`--starting-port` / `-p`| The starting port number. This port number will be used for the bootstrap connection and will be used as the basis to calculate the per-broker ports. |`50000`|
79
79
|`--kekspose-name` / `-k`| Name that will be used for the Keksposé ConfigMap and Pod. |`kekspose`|
80
80
|`--timeout` / `-t`| Timeout for how long to wait for the Proxy Pod to become ready. In milliseconds. |`300000`|
81
-
|`--proxy-image` / `-i`| Container image used for the proxy (must be based on a compatible Kroxylicious container image) |`ghcr.io/scholzj/kekspose:kroxylicious-0.13.0`|
81
+
|`--proxy-image` / `-i`| Container image used for the proxy (must be based on a compatible Kroxylicious container image) |`ghcr.io/scholzj/kekspose:kroxylicious-0.16.0`|
82
82
83
-
If you are using the Keksposé binary, you can just pass the options from the command line.
83
+
If you are using the Keksposé binary, you can pass the options from the command line.
84
84
85
85
## Frequently Asked Questions
86
86
87
87
### Does Keksposé support Kafka clusters with authentication?
88
88
89
89
Keksposé requires a listener without TLS encryption.
90
-
But it supports Kafka clusters with SASLbased authentication such as SCRAM-SHA or OAuth.
90
+
But it supports Kafka clusters with SASL-based authentication, such as SCRAM-SHA or OAuth.
91
91
92
92
### What happens when I scale my Kafka cluster?
93
93
94
94
You might need to restart Keksposé after scaling up your Kafka cluster or changing the IDs of the Apache Kafka nodes.
95
95
96
96
### Does Keksposé support KRaft-based Apache Kafka clusters?
Keksposé supports a Kraft-based Apache Kafka cluster.
99
99
However, it exposes the broker nodes only.
100
100
101
101
### What access rights do I need to run Keksposé?
@@ -107,13 +107,13 @@ Running Keksposé requires the following access rights to your Kubernetes cluste
107
107
108
108
### Does Keksposé work only with local Kubernetes clusters?
109
109
110
-
Keksposé was designed with focus on local Kubernetes environments such as Minikube, Kind, or Docker Desktop.
110
+
Keksposé was designed with a focus on local Kubernetes environments such as Minikube, Kind, or Docker Desktop.
111
111
But it can be used with any Kubernetes cluster regardless of how and where you run it.
112
112
113
113
### Can the same Kafka cluster be exposed to multiple users in parallel?
114
114
115
-
Any user that has access to the Kubernetes cluster and the necessary rights can expose it.
116
-
But in order to be able to expose the Kafka cluster, Keksposé has to deploy the proxy into the Kubernetes cluster.
115
+
Any user who has access to the Kubernetes cluster and the necessary rights can expose it.
116
+
But to be able to expose the Kafka cluster, Keksposé has to deploy the proxy into the Kubernetes cluster.
117
117
So if the same cluster should be exposed in parallel to multiple users, it is important that they each use their own value for the `--kekspose-name` option to make sure each user has a custom proxy instance.
rootCmd.Flags().StringVarP(&clusterName, "cluster-name", "c", "my-cluster", "Name of the Kafka cluster.")
76
77
rootCmd.Flags().StringVarP(&listenerName, "listener-name", "l", "", "Name of the listener that should be exposed.")
77
78
rootCmd.Flags().StringVarP(&keksposeName, "kekspose-name", "k", "kekspose", "Name that will be used for the Keksposé ConfigMap and Pod.")
78
-
rootCmd.Flags().StringVarP(&proxyImage, "proxy-image", "i", "ghcr.io/scholzj/kekspose:kroxylicious-0.13.0", "Container image used for the proxy (must be based on a compatible Kroxylicious container image).")
79
+
rootCmd.Flags().StringVarP(&proxyImage, "proxy-image", "i", "ghcr.io/scholzj/kekspose:kroxylicious-0.16.0", "Container image used for the proxy (must be based on a compatible Kroxylicious container image).")
79
80
rootCmd.Flags().Uint16VarP(&startingPort, "starting-port", "p", 50000, "The starting port number. This port number will be used for the bootstrap connection and will be used as the basis to calculate the per-broker ports.")
80
81
rootCmd.Flags().Uint32VarP(&timeout, "timeout", "t", 300000, "Timeout for how long to wait for the Proxy Pod to become ready. In milliseconds.")
0 commit comments