Kafka cluster as Kubernetes StatefulSet, plain manifests and config
APACHE-2.0 License
This community seeks to provide:
To quote @arthurk:
thanks for creating and maintaining this Kubernetes files, they're up-to-date (unlike the kubernetes contrib files, don't require helm and work great!
We suggest you apply -f
manifests in the following order:
That'll give you client "bootstrap" bootstrap.kafka.svc.cluster.local:9092
.
Our only dependency is kubectl
. Not because we dislike Helm or Operators, but because we think plain manifests make it easier to collaborate.
If you begin to rely on this kafka setup we recommend you fork, for example to edit broker config.
With the introduction of app customization in kubectl
1.14 there's an alternative to forks. We as a community can maintain a set of overlays.
See the variants folder for different overlays. For example to scale to 1 kafka broker try kubectl apply -k variants/scale-1/
.
Variants also include examples of how to configure volumes for GKE, AWS and AKS with different storage classes.
kubectl create namespace kafka && \
kubectl apply -k github.com/Yolean/kubernetes-kafka/variants/dev-small/?ref=v6.0.3
When all pods are Ready, test with for example kafkacat -b localhost:9094 -L
over kubectl -n kafka port-forward kafka-0 9094
.
Start your variant as a new folder in your choice of version control, with a base kustomization.yaml
pointing to a tag or revision in this repository:
bases:
- github.com/Yolean/kubernetes-kafka/rbac-namespace-default/?ref=60d01b5
- github.com/Yolean/kubernetes-kafka/kafka/?ref=60d01b5
- github.com/Yolean/kubernetes-kafka/zookeeper/?ref=60d01b5
Then pick and chose from patches our example variants to tailor your Kafka setup.
tag | k8s ≥ | highlights |
---|---|---|
v7.0.0 | 1.15+ | Breaking with nonroot and native bases |
v6.0.x | 1.13+ | Kafka 2.4.0 + standard storage class |
v6.0.0 | 1.11+ | Kafka 2.2.0 + apply -k (kubectl 1.14+) + #270
|
v5.1.0 | 1.11+ | Kafka 2.1.1 |
v5.0.3 | 1.11+ | Zookeeper fix #227 + maxClientCnxns=1 |
v5.0 | 1.11+ | Destabilize because in Docker we want Java 11 #197 #191 |
v4.3.1 | 1.9+ | Critical Zookeeper persistence fix #228 |
v4.3 | 1.9+ | Adds a proper shutdown hook #207 |
v4.2 | 1.9+ | Kafka 1.0.2 and tools upgrade |
... see releases for full history ... | ||
v1.0 | 1 | Stateful? In Kubernetes? In 2016? Yes. |
Have a look at:
Available for: