// This assembly is included in the following assemblies:
//
// configuring/configuring.adoc

[id='overview-{context}']
= Configuring a deployment

[role="_abstract"]
Configure and manage a Strimzi deployment to your precise needs using Strimzi custom resources.
Strimzi provides example custom resources with each release, allowing you to configure and create instances of supported Kafka components.
Fine-tune your deployment by configuring custom resources to include additional features according to your specific requirements. 
For specific areas of configuration, namely metrics, logging, and external configuration for Kafka Connect connectors, you can also use `ConfigMap` resources.
By using a `ConfigMap` resource to incorporate configuration, you centralize maintenance. 
You can also use configuration providers to load configuration from external sources, which we recommend for supplying the credentials for Kafka Connect connector configuration.

Use custom resources to configure and create instances of the following components:

* Kafka clusters
* Kafka Connect clusters
* Kafka MirrorMaker
* Kafka Bridge
* Cruise Control

You can also use custom resource configuration to manage your instances or modify your deployment to introduce additional features.
This might include configuration that supports the following:

* (Preview) Specifying node pools
* Securing client access to Kafka brokers
* Accessing Kafka brokers from outside the cluster
* Creating topics
* Creating users (clients)
* Controlling feature gates
* Changing logging frequency
* Allocating resource limits and requests
* Introducing features, such as Strimzi Drain Cleaner, Cruise Control, or distributed tracing.

The link:{BookURLConfiguring}[Strimzi Custom Resource API Reference^] describes the properties you can use in your configuration.

NOTE: Labels applied to a custom resource are also applied to the Kubernetes resources making up its cluster.
This provides a convenient mechanism for resources to be labeled as required.

.Applying changes to a custom resource configuration file

You add configuration to a custom resource using `spec` properties. 
After adding the configuration, you can use `kubectl` to apply the changes to a custom resource configuration file:

[source,shell,subs=+quotes]
----
kubectl apply -f <kafka_configuration_file>
----

//How to access examples
include::../../modules/configuring/con-config-examples.adoc[leveloffset=+1]

//`Kafka` resource config
include::../../modules/configuring/con-config-kafka.adoc[leveloffset=+1]
//setting static broker limits
include::../../modules/managing/proc-setting-broker-limits.adoc[leveloffset=+2]
//Zookeeper's default configuration
include::../../modules/configuring/con-zookeeper-default-config.adoc[leveloffset=+2]

//configuring node pools
include::../../modules/configuring/con-config-node-pools.adoc[leveloffset=+1]
include::../../modules/configuring/proc-managing-node-pools-ids.adoc[leveloffset=+2]
include::../../modules/configuring/proc-scaling-up-node-pools.adoc[leveloffset=+2]
include::../../modules/configuring/proc-scaling-down-node-pools.adoc[leveloffset=+2]
include::../../modules/configuring/proc-moving-node-pools.adoc[leveloffset=+2]
include::../../modules/configuring/proc-migrating-clusters-node-pools.adoc[leveloffset=+2]

//`Kafka` config for operators
include::../../modules/configuring/ref-kafka-entity-operator.adoc[leveloffset=+1]
//topic operator config
include::../../modules/configuring/con-configuring-topic-operator.adoc[leveloffset=+2]
//user operator config
include::../../modules/configuring/con-configuring-user-operator.adoc[leveloffset=+2]

//`KafkaConnect` resource config
include::../../modules/configuring/con-config-kafka-connect.adoc[leveloffset=+1]
//if authorization is enabled, configure the Kafka Connect user for read/write access rights
include::../../modules/configuring/proc-config-kafka-connect-user-authorization.adoc[leveloffset=+2]

//`KafkaMirrorMaker2` resource config
include::../../modules/configuring/con-config-mirrormaker2.adoc[leveloffset=+1]
//configuring replication modes 
include::../../modules/overview/con-overview-mirrormaker2.adoc[leveloffset=+2]
//configuring MM2 connectors
include::../../modules/configuring/con-config-mirrormaker2-connectors.adoc[leveloffset=+2]
//configuring MM2 connector producers and consumers
include::../../modules/configuring/con-config-mirrormaker2-producers-consumers.adoc[leveloffset=+2]
//increasing the number of tasks
include::../../modules/configuring/con-config-mirrormaker2-tasks-max.adoc[leveloffset=+2]
//handling of ACLs in replication
include::../../modules/configuring/con-config-mirrormaker2-acls.adoc[leveloffset=+2]
//securing connections to and from mirrormaker
include::../../modules/configuring/proc-config-mirrormaker2-securing-connection.adoc[leveloffset=+2]

//`KafkaMirrorMaker` resource config
include::../../modules/configuring/con-config-mirrormaker.adoc[leveloffset=+1]

//`KafkaBridge` resource config
include::../../modules/configuring/con-config-kafka-bridge.adoc[leveloffset=+1]

//configuring Kafka and ZooKeeper storage
include::../../assemblies/configuring/assembly-storage.adoc[leveloffset=+1]

//configuring CPU and memory resources and limits
include::../../modules/configuring/con-config-resources.adoc[leveloffset=+1]

//customizing Kubernetes resources like Deployment etc
include::assembly-customizing-kubernetes-resources.adoc[leveloffset=+1]

//scheduling separate Kafka pods 
include::assembly-scheduling.adoc[leveloffset=+1]

//configuring log levels
include::assembly-logging-configuration.adoc[leveloffset=+1]

//loading configuration from configmaps for certain types of data
include::../../modules/configuring/con-configuration-points-configmaps.adoc[leveloffset=+1]

//loading configuration from external sources for all Kafka components
include::assembly-external-config.adoc[leveloffset=+1]
