Skip to main content
Version: 2.0.2

Kafka API Reference

This reference details the configuration and operation of Kafka clusters on Hikube, including topic management, Kafka broker configuration, and coordination via ZooKeeper.


Base Structure​

Kafka Resource​

YAML Configuration Example​

apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: kafka
spec:
external: false
kafka:
replicas: 3
resourcesPreset: small
size: 10Gi
topics: []
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi

Parameters​

Common Parameters​

ParameterTypeDescriptionDefaultRequired
externalboolEnable external access to the Kafka cluster (expose outside the Kubernetes cluster)falseNo

YAML Example​

kafka.yaml
external: true

Kafka Parameters​

ParameterTypeDescriptionDefaultRequired
kafkaobjectKafka cluster configuration{}Yes
kafka.replicasintNumber of Kafka replicas (brokers)3Yes
kafka.resourcesobjectExplicit CPU and memory configuration for each broker. If empty, kafka.resourcesPreset is used.{}No
kafka.resources.cpuquantityCPU available per brokernullNo
kafka.resources.memoryquantityRAM available per brokernullNo
kafka.resourcesPresetstringDefault resource preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Yes
kafka.sizequantityPersistent volume size used for Kafka data10GiYes
kafka.storageClassstringStorageClass used to store Kafka data""No

YAML Example​

kafka.yaml
kafka:
replicas: 3
resources:
cpu: 2000m
memory: 2Gi
resourcesPreset: medium
size: 20Gi
storageClass: replicated

ZooKeeper Parameters​

ParameterTypeDescriptionDefaultRequired
zookeeperobjectZooKeeper cluster configuration used by Kafka{}Yes
zookeeper.replicasintNumber of ZooKeeper replicas3Yes
zookeeper.resourcesobjectExplicit CPU and memory configuration for each replica. If empty, zookeeper.resourcesPreset is used.{}No
zookeeper.resources.cpuquantityCPU available per ZooKeeper replicanullNo
zookeeper.resources.memoryquantityRAM available per ZooKeeper replicanullNo
zookeeper.resourcesPresetstringDefault resource preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Yes
zookeeper.sizequantityPersistent volume size for ZooKeeper5GiYes
zookeeper.storageClassstringStorageClass used to store ZooKeeper data""No

YAML Example​

kafka.yaml
zookeeper:
replicas: 3
resourcesPreset: small
size: 5Gi
storageClass: replicated

Topics Parameters​

ParameterTypeDescriptionDefaultRequired
topics[]objectList of topics to create automatically[]No
topics[i].namestringTopic name""Yes
topics[i].partitionsintNumber of topic partitions0Yes
topics[i].replicasintNumber of topic replicas0Yes
topics[i].configobjectAdvanced topic configuration (cleanup, retention, etc.){}No

YAML Example​

kafka.yaml
topics:
- name: results
partitions: 1
replicas: 3
config:
min.insync.replicas: 2
- name: orders
partitions: 1
replicas: 3
config:
cleanup.policy: compact
segment.ms: 3600000
max.compaction.lag.ms: 5400000
min.insync.replicas: 2

resources and resourcesPreset​

The resources field allows explicitly defining the CPU and memory configuration of each broker or ZooKeeper node. If this field is left empty, the value of the resourcesPreset parameter is used.

YAML Example​

kafka.yaml
resources:
cpu: 4000m
memory: 4Gi

⚠️ Warning: if resources is defined, the resourcesPreset value is ignored.

Preset nameCPUMemory
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Complete Examples​

Production Cluster​

kafka-production.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: production
spec:
external: false
kafka:
replicas: 3
resources:
cpu: 4000m
memory: 8Gi
size: 100Gi
storageClass: replicated
zookeeper:
replicas: 3
resourcesPreset: small
size: 10Gi
storageClass: replicated
topics:
- name: events
partitions: 6
replicas: 3
config:
retention.ms: "604800000"
cleanup.policy: "delete"
min.insync.replicas: "2"
- name: commands
partitions: 3
replicas: 3
config:
cleanup.policy: "compact"
min.insync.replicas: "2"

Development Cluster​

kafka-development.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: Kafka
metadata:
name: development
spec:
external: false
kafka:
replicas: 1
resourcesPreset: nano
size: 5Gi
zookeeper:
replicas: 1
resourcesPreset: nano
size: 2Gi
topics:
- name: test-topic
partitions: 1
replicas: 1

Best Practices
  • min.insync.replicas: 2: configure this parameter on your production topics to ensure at least 2 replicas acknowledge each write
  • Replicated storage: use storageClass: replicated to protect data against the loss of a physical node
  • Storage sizing: plan enough disk space for message retention (retention.ms) and compaction
  • ZooKeeper: 3 replicas minimum in production to ensure quorum and fault tolerance
Warning
  • Deletions are irreversible: deleting a Kafka resource results in the permanent loss of all messages and topics
  • Topic replicas vs brokers: the number of replicas for a topic cannot exceed the number of available brokers
  • Reducing the number of brokers: reducing the number of brokers on an existing cluster can lead to data loss if partitions are not redistributed beforehand