// This assembly is included in the following assemblies:
//
// deploying/assembly-deploy-tasks.adoc

[id='kafka-cluster-{context}']
= Deploying Kafka

[role="_abstract"]
To be able to manage a Kafka cluster with the Cluster Operator, you must deploy it as a `Kafka` resource.
Strimzi provides example deployment files to do this.
You can use these files to deploy the Topic Operator and User Operator at the same time.

After you have deployed the Cluster Operator, use a `Kafka` resource to deploy the following components:

* A Kafka cluster that uses KRaft or ZooKeeper:
** xref:deploying-kafka-cluster-kraft-{context}[KRaft-based Kafka cluster]
** xref:deploying-kafka-cluster-zookeeper-{context}[ZooKeeper-based Kafka cluster]
* xref:deploying-the-topic-operator-using-the-cluster-operator-{context}[Topic Operator]
* xref:deploying-the-user-operator-using-the-cluster-operator-{context}[User Operator]

Node pools are used in the deployment of a Kafka cluster in KRaft (Kafka Raft metadata) mode, and may be used for the deployment of a Kafka cluster with ZooKeeper.
Node pools represent a distinct group of Kafka nodes within the Kafka cluster that share the same configuration.
For each Kafka node in the node pool, any configuration not defined in node pool is inherited from the cluster configuration in the `Kafka` resource. 

If you haven't deployed a Kafka cluster as a `Kafka` resource, you can't use the Cluster Operator to manage it.
This applies, for example, to a Kafka cluster running outside of Kubernetes.
However, you can use the Topic Operator and User Operator with a Kafka cluster that is *not managed* by Strimzi, by xref:deploy-standalone-operators_{context}[deploying them as standalone components].
You can also deploy and use other Kafka components with a Kafka cluster not managed by Strimzi. 

//Deploy Kafka in KRaft mode
include::../../modules/deploying/proc-deploy-kafka-cluster-kraft.adoc[leveloffset=+1]
//Deploy ZooKeeper-based Kafka cluster
include::../../modules/deploying/proc-deploy-kafka-cluster-zookeeper.adoc[leveloffset=+1]
//Include Topic Operator in deployment
include::../../modules/deploying/proc-deploy-topic-operator-with-cluster-operator.adoc[leveloffset=+1]
//Include User Operator in deployment
include::../../modules/deploying/proc-deploy-user-operator-with-cluster-operator.adoc[leveloffset=+1]
//Connecting to ZooKeeper from terminal
include::../../modules/configuring/proc-connecting-to-zookeeper.adoc[leveloffset=+1]
//Kafka cluster resources created
include::../../modules/configuring/ref-list-of-kafka-cluster-resources.adoc[leveloffset=+1]