# Configuration

{% hint style="success" %}
Found an issue? Feed it back to us at [Github](https://github.com/orgs/lensesio/discussions), on [Slack](https://www.launchpass.com/lensesio), [Ask Marios](https://ask.lenses.io/) or [email](mailto:info@lenses.io).
{% endhint %}

{% hint style="warning" %}
To execute K2K, you must agree to the EULA and secure a free license.&#x20;

Accept the EULA by setting `license.acceptEula` to `true` .
{% endhint %}

The K2K application defines its replication behavior using a YAML configuration. This configuration can be structured as a single YAML file or be split across multiple files.

Regardless of a single file or a multi-file structure, the complete, aggregated configuration is validated against a JSON Schema. This validation occurs both at startup and during any runtime updates, ensuring the operational reliability and integrity of your data replication pipelines.

### Configuration Structure

The configuration file consists of the following sections:

#### Required Sections

**`source`** - Source cluster configuration\
Defines connection parameters and Kafka consumer properties for the source cluster.\
See: [connections](https://docs.lenses.io/latest/k2k/configuration/connections "mention")

**`target`** - Target cluster configuration\
Specifies connection parameters and Kafka producer properties for the target cluster.\
See: [connections](https://docs.lenses.io/latest/k2k/configuration/connections "mention")

**`replication`** - Replication flow definitions\
Contains replication flows that map source topics to target topics and define record routing.\
See: [selecting-topics](https://docs.lenses.io/latest/k2k/tutorial/selecting-topics "mention")[target-partition](https://docs.lenses.io/latest/k2k/configuration/target-partition "mention")[records-routing](https://docs.lenses.io/latest/k2k/configuration/records-routing "mention")[source-topics](https://docs.lenses.io/latest/k2k/configuration/source-topics "mention")

**`coordination`** - State management configuration\
Configures internal coordination mechanisms, including offset tracking on the target cluster.\
See: [connections](https://docs.lenses.io/latest/k2k/configuration/connections "mention")

#### Optional Sections

**`features`** - Feature flags\
Controls advanced capabilities such as exactly-once semantics, schema replication, and tracing headers.\
See: [exactly-once](https://docs.lenses.io/latest/k2k/configuration/exactly-once "mention"), [schema-replication](https://docs.lenses.io/latest/k2k/configuration/schema-replication "mention")

**`errorHandling`** - Fault tolerance configuration\
Defines strategies for handling recoverable errors during replication operations.\
See: [error-handling](https://docs.lenses.io/latest/k2k/configuration/error-handling "mention")

**`tracing`** - Record enrichment configuration\
Configures tracing header injection for observability and data lineage tracking.\
See: [tracing-headers](https://docs.lenses.io/latest/k2k/configuration/tracing-headers "mention")

### Additional Configuration Topics

* Variables and Secrets - Environment variable substitution and credential management. See [variables-and-secrets](https://docs.lenses.io/latest/k2k/tutorial/variables-and-secrets "mention")
* Metrics - Monitoring and observability configuration. See [metrics](https://docs.lenses.io/latest/k2k/configuration/metrics "mention") for details.

## **Schema Definition**

The full JSON Schema definition for the configuration is available on [GitHub](https://github.com/lensesio/json-schemas/blob/main/k2k/pipeline.schema.json). Refer to it for details on structure, types, and parameter constraints.

## Minimal Configuration

```yaml
name: "mini-k2k"
source:
  kafka:
    connection:
      servers: "sourceKafka:9092"
target:
  kafka:
    connection:
      servers: "targetKafka:9092"
    consumer:
      "group.id": "k2k.mini-k2k.source"
replication:
  - source:
      name: topic-source
      # choose to replicate the topic named my-topic
      topic: "my-topic"
  - sink:
      name: topic-sink
      # use the original topic name as the target topic
      topic: source
      # replicate each record to the same partition as the
      # original topic 
      partition: source
coordination:
  kafka:
    commit:
      # set the consumer group name for reading 
      # the K2K internal coordination topic.
      group: "k2k.mini-k2k.coordination"  
```
