Skip to content

Commit 6f70eda

Browse files
committed
Added kraft documentation
1 parent b196e7f commit 6f70eda

File tree

11 files changed

+446
-30
lines changed

11 files changed

+446
-30
lines changed

config/_default/config.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ weight = 1
5555
project_name = "Koperator"
5656
product_name = "Koperator"
5757

58-
latest_version = "0.28.0-adobe-20250921" # Used in some installation commands
58+
latest_version = "0.28.0-adobe-20250923" # Used in some installation commands
5959

6060
###############################################################################
6161
# Docsy-theme specific config customizations
@@ -69,7 +69,7 @@ weight = 1
6969
# The version number for the version of the docs represented in this doc set.
7070
# Used in the "version-banner" partial to display a version number for the
7171
# current doc set.
72-
version = "0.28.0-adobe-20250921"
72+
version = "0.28.0-adobe-20250923"
7373
version_menu_canonicallinks = true
7474

7575
# A link to latest version of the docs. Used in the "version-banner" partial to

content/docs/_index.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ The Koperator (formerly called Banzai Cloud Kafka Operator) is a Kubernetes oper
1111
[Apache Kafka](https://kafka.apache.org) is an open-source distributed streaming platform, and some of the main features of the **Koperator** are:
1212

1313
- the provisioning of secure and production-ready Kafka clusters
14+
- **KRaft mode support** for ZooKeeper-free Kafka deployments
1415
- **fine grained** broker configuration support
1516
- advanced and highly configurable External Access via LoadBalancers using **Envoy**
1617
- graceful Kafka cluster **scaling and rebalancing**
@@ -124,6 +125,18 @@ Read-only config requires broker restart to update all the others may be updated
124125
Operator CRD distinguishes these fields, and proceed with the right action. It can be a rolling upgrade, or
125126
a dynamic reconfiguration.
126127

128+
### KRaft Mode Support (ZooKeeper-free Kafka)
129+
130+
Koperator supports Apache Kafka's KRaft mode, which eliminates the dependency on ZooKeeper:
131+
132+
- **Simplified Architecture**: Deploy Kafka clusters without requiring a separate ZooKeeper cluster
133+
- **Better Scalability**: Improved metadata handling for large-scale deployments
134+
- **Future-Ready**: KRaft is the future of Kafka and the recommended approach for new deployments
135+
- **Flexible Node Roles**: Support for dedicated controller nodes, broker nodes, or combined roles
136+
- **Production Ready**: Full support for SSL, monitoring, and all Koperator features in KRaft mode with Kafka 3.9.1
137+
138+
For detailed KRaft configuration and deployment guides, see the [KRaft Mode Documentation]({{< relref "kraft.md" >}}).
139+
127140
### Seamless Istio mesh support
128141

129142
- **Standard Istio Integration**: Koperator now uses standard Istio resources (Gateway, VirtualService) instead of deprecated banzaicloud istio-operator

content/docs/benchmarks/_index.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,15 @@ How to setup the environment for the Kafka Performance Test.
7474
1. Install the Koperator CustomResourceDefinition resources (adjust the version number to the Koperator release you want to install) and the corresponding version of Koperator, the Operator for managing Apache Kafka on Kubernetes.
7575
7676
```bash
77-
kubectl create --validate=false -f https://github.com/adobe/koperator/releases/download/v{{< param "latest_version" >}}/kafka-operator.crds.yaml
77+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_cruisecontroloperations.yaml
78+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkaclusters.yaml
79+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkatopics.yaml
80+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkausers.yaml
7881
```
7982
8083
```bash
8184
helm install kafka-operator \
82-
oci://ghcr.io/adobe/koperator/kafka-operator \
85+
oci://ghcr.io/adobe/helm-charts/kafka-operator \
8386
--namespace=kafka \
8487
--create-namespace
8588
```

content/docs/compatibility-matrix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ This page shows you the list of supported Koperator versions, and the versions o
1313
1414
|Image|Go version|
1515
|-|-|
16-
|ghcr.io/adobe/koperator/kafka-operator:0.28.0-adobe-20250921|1.25|
16+
|ghcr.io/adobe/koperator/kafka-operator:0.28.0-adobe-20250923|1.25|
1717

1818
## Available Apache Kafka images
1919

content/docs/configurations/examples/_index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,11 @@ You can set node [affinity](https://kubernetes.io/docs/concepts/scheduling-evict
7878
You can configure your brokers to use custom [storage classes](https://kubernetes.io/docs/concepts/storage/storage-classes/).
7979

8080
- [Custom storage class](https://github.com/adobe/koperator/blob/master/config/samples/simplekafkacluster_ebs_csi.yaml)
81+
82+
## Kafka cluster with KRaft mode (ZooKeeper-free)
83+
84+
You can deploy Kafka clusters using KRaft mode, which eliminates the need for ZooKeeper by using Kafka's built-in consensus mechanism. This is the future of Kafka and is recommended for new deployments.
85+
86+
- [Simple KafkaCluster with KRaft mode](https://github.com/adobe/koperator/blob/master/config/samples/kraft/simplekafkacluster_kraft.yaml)
87+
88+
For detailed information about KRaft configuration and deployment, see {{% xref "../../kraft.md" %}}.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
kubectl create -n kafka -f - <<EOF
2+
apiVersion: kafka.banzaicloud.io/v1beta1
3+
kind: KafkaCluster
4+
metadata:
5+
name: kafka-kraft
6+
spec:
7+
kRaft: true
8+
headlessServiceEnabled: true
9+
clusterImage: "ghcr.io/adobe/koperator/kafka:2.13-3.9.1"
10+
11+
brokerConfigGroups:
12+
default:
13+
storageConfigs:
14+
- mountPath: "/kafka-logs"
15+
pvcSpec:
16+
accessModes:
17+
- ReadWriteOnce
18+
resources:
19+
requests:
20+
storage: 10Gi
21+
broker:
22+
processRoles:
23+
- broker
24+
storageConfigs:
25+
- mountPath: "/kafka-logs-broker"
26+
pvcSpec:
27+
accessModes:
28+
- ReadWriteOnce
29+
resources:
30+
requests:
31+
storage: 10Gi
32+
33+
brokers:
34+
# Broker-only nodes
35+
- id: 0
36+
brokerConfigGroup: "broker"
37+
- id: 1
38+
brokerConfigGroup: "broker"
39+
- id: 2
40+
brokerConfigGroup: "broker"
41+
42+
# Controller-only nodes
43+
- id: 3
44+
brokerConfigGroup: "default"
45+
brokerConfig:
46+
processRoles:
47+
- controller
48+
- id: 4
49+
brokerConfigGroup: "default"
50+
brokerConfig:
51+
processRoles:
52+
- controller
53+
- id: 5
54+
brokerConfigGroup: "default"
55+
brokerConfig:
56+
processRoles:
57+
- controller
58+
59+
listenersConfig:
60+
internalListeners:
61+
- type: "plaintext"
62+
name: "internal"
63+
containerPort: 29092
64+
usedForInnerBrokerCommunication: true
65+
- type: "plaintext"
66+
name: "controller"
67+
containerPort: 29093
68+
usedForInnerBrokerCommunication: false
69+
usedForControllerCommunication: true
70+
71+
cruiseControlConfig:
72+
cruiseControlTaskSpec:
73+
RetryDurationMinutes: 5
74+
topicConfig:
75+
partitions: 12
76+
replicationFactor: 3
77+
EOF

content/docs/delete-kafka-operator.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ In case you want to delete the Koperator from your cluster, note that because of
7575
7676
1. Delete Koperator Custom Resource Definitions (CRDs).
7777
```
78-
kubectl delete -f https://github.com/adobe/koperator/releases/download/v{{< param "latest_version" >}}/kafka-operator.crds.yaml
78+
kubectl delete -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_cruisecontroloperations.yaml
79+
kubectl delete -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkaclusters.yaml
80+
kubectl delete -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkatopics.yaml
81+
kubectl delete -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkausers.yaml
7982
```
8083
8184
## Uninstall Prometheus operator

content/docs/install-kafka-operator.md

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The operator installs version 3.9.1 of Apache Kafka, and can run on:
1818

1919
- A Kubernetes cluster (minimum 6 vCPU and 10 GB RAM). Red Hat OpenShift is also supported in Koperator version 0.24 and newer, but note that it needs some permissions for certain components to function.
2020

21-
> We believe in the `separation of concerns` principle, thus the Koperator does not install nor manage Apache ZooKeeper or cert-manager.
21+
> We believe in the `separation of concerns` principle, thus the Koperator does not install nor manage Apache ZooKeeper or cert-manager. Note that ZooKeeper is only required for traditional Kafka deployments - KRaft mode deployments do not require ZooKeeper.
2222
2323
## Install Koperator and its requirements independently {#install-kafka-operator-and-its-requirements-independently}
2424

@@ -195,12 +195,14 @@ Koperator uses [cert-manager](https://cert-manager.io) for issuing certificates
195195
cert-manager-webhook-56889bfc96-x8szj 1/1 Running 0 117s
196196
```
197197
198-
### Install zookeeper-operator with Helm {#install-zookeeper-operator-with-helm}
198+
### Install zookeeper-operator with Helm (Optional for KRaft mode) {#install-zookeeper-operator-with-helm}
199199
200-
Koperator requires [Apache Zookeeper](https://zookeeper.apache.org) for Kafka operations. You must:
200+
Koperator can use either [Apache Zookeeper](https://zookeeper.apache.org) or KRaft mode for Kafka cluster coordination:
201201
202-
- Deploy zookeeper-operator if your environment doesn't have an instance of it yet.
203-
- Create a Zookeeper cluster if there is none in your environment yet for your Kafka cluster.
202+
- **For traditional deployments**: Deploy zookeeper-operator if your environment doesn't have an instance of it yet, and create a Zookeeper cluster if there is none in your environment yet for your Kafka cluster.
203+
- **For KRaft mode deployments**: ZooKeeper is not required. Skip this section and see {{% xref "/docs/kraft.md" %}} for KRaft configuration.
204+
205+
If you're deploying a traditional Kafka cluster (non-KRaft), you must:
204206
205207
> Note: You are recommended to create a separate ZooKeeper deployment for each Kafka cluster. If you want to share the same ZooKeeper cluster across multiple Kafka cluster instances, use a unique zk path in the KafkaCluster CR to avoid conflicts (even with previous defunct KafkaCluster instances).
206208
@@ -489,9 +491,10 @@ Koperator can be deployed using its [Helm chart](https://github.com/adobe/kopera
489491
1. Install the Koperator CustomResourceDefinition resources (adjust the version number to the Koperator release you want to install). This is performed in a separate step to allow you to uninstall and reinstall Koperator without deleting your installed custom resources.
490492
491493
```bash
492-
kubectl create \
493-
--validate=false \
494-
-f https://github.com/adobe/koperator/releases/download/v{{< param "latest_version" >}}/kafka-operator.crds.yaml
494+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_cruisecontroloperations.yaml
495+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkaclusters.yaml
496+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkatopics.yaml
497+
kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/master/config/base/crds/kafka.banzaicloud.io_kafkausers.yaml
495498
```
496499
497500
Expected output:
@@ -537,17 +540,30 @@ Koperator can be deployed using its [Helm chart](https://github.com/adobe/kopera
537540
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:anyuid added: "system:serviceaccount:{NAMESPACE_FOR_KAFKA_CLUSTER_BROKER_SERVICE_ACCOUNT}:{KAFKA_CLUSTER_BROKER_SERVICE_ACCOUNT_NAME}"
538541
```
539542
540-
1. Install Koperator into the *kafka* namespace:
543+
1. Install Koperator into the *kafka* namespace using the OCI Helm chart from GitHub Container Registry:
544+
545+
> 📦 **View available versions**: [ghcr.io/adobe/koperator/kafka-operator](https://github.com/adobe/koperator/pkgs/container/koperator%2Fkafka-operator/versions)
541546
542547
```bash
543-
helm install \
544-
kafka-operator \
545-
oci://ghcr.io/adobe/koperator/kafka-operator \
546-
--version {{< param "latest_version" >}} \
547-
--namespace=kafka \
548-
--create-namespace \
549-
--atomic \
550-
--debug
548+
# Install the latest release
549+
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator --namespace=kafka --create-namespace
550+
551+
# Or install a specific version (replace with desired version)
552+
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator --version {{< param "latest_version" >}} --namespace=kafka --create-namespace
553+
```
554+
555+
#### Pull and inspect the chart before installation
556+
557+
```bash
558+
# Pull the chart locally
559+
helm pull oci://ghcr.io/adobe/helm-charts/kafka-operator --version {{< param "latest_version" >}}
560+
561+
# Extract and inspect
562+
tar -xzf kafka-operator-{{< param "latest_version" >}}.tgz
563+
helm template kafka-operator ./kafka-operator/
564+
565+
# Install from local chart
566+
helm install kafka-operator ./kafka-operator/ --namespace=kafka --create-namespace
551567
```
552568
553569
Expected output:
@@ -602,6 +618,14 @@ Koperator can be deployed using its [Helm chart](https://github.com/adobe/kopera
602618
-f https://raw.githubusercontent.com/adobe/koperator/v{{< param "latest_version" >}}/config/samples/simplekafkacluster_ssl.yaml
603619
```
604620
621+
- To create a sample Kafka cluster using KRaft mode (ZooKeeper-free), run the following command. For details on KRaft configuration, see {{% xref "/docs/kraft.md" %}}.
622+
623+
```bash
624+
kubectl create \
625+
-n kafka \
626+
-f https://raw.githubusercontent.com/adobe/koperator/master/config/samples/kraft/simplekafkacluster_kraft.yaml
627+
```
628+
605629
Expected output:
606630
607631
```bash

0 commit comments

Comments
 (0)