Strimzi · Schema
Strimzi Kafka Custom Resource
Represents a Kafka cluster managed by the Strimzi operator. The Kafka custom resource defines the desired state of a Kafka cluster including broker count, Kafka version, ZooKeeper/KRaft configuration, storage, listeners, and security settings.
KafkaKubernetesMessagingOperatorStreaming
Properties
| Name | Type | Description |
|---|---|---|
| apiVersion | string | The API version of the Strimzi resource |
| kind | string | The resource kind |
| metadata | object | |
| spec | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://strimzi.io/schemas/kafka.json",
"title": "Strimzi Kafka Custom Resource",
"description": "Represents a Kafka cluster managed by the Strimzi operator. The Kafka custom resource defines the desired state of a Kafka cluster including broker count, Kafka version, ZooKeeper/KRaft configuration, storage, listeners, and security settings.",
"type": "object",
"required": ["apiVersion", "kind", "metadata", "spec"],
"properties": {
"apiVersion": {
"type": "string",
"enum": ["kafka.strimzi.io/v1beta2"],
"description": "The API version of the Strimzi resource"
},
"kind": {
"type": "string",
"enum": ["Kafka"],
"description": "The resource kind"
},
"metadata": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "The name of the Kafka cluster"
},
"namespace": {
"type": "string",
"description": "The Kubernetes namespace"
},
"labels": {
"type": "object",
"additionalProperties": {"type": "string"}
},
"annotations": {
"type": "object",
"additionalProperties": {"type": "string"}
}
}
},
"spec": {
"type": "object",
"required": ["kafka"],
"properties": {
"kafka": {
"type": "object",
"required": ["replicas", "listeners", "storage"],
"description": "Kafka broker configuration",
"properties": {
"replicas": {
"type": "integer",
"minimum": 1,
"description": "Number of Kafka broker pods"
},
"version": {
"type": "string",
"description": "Kafka version to deploy (e.g., 3.7.0)"
},
"storage": {
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"enum": ["ephemeral", "persistent-claim", "jbod"],
"description": "Storage type"
},
"size": {
"type": "string",
"description": "Storage size for persistent-claim (e.g., 100Gi)"
}
}
},
"listeners": {
"type": "array",
"description": "Kafka listener configurations",
"items": {
"type": "object",
"required": ["name", "port", "type", "tls"],
"properties": {
"name": {"type": "string"},
"port": {"type": "integer"},
"type": {
"type": "string",
"enum": ["internal", "route", "loadbalancer", "nodeport", "ingress", "cluster-ip"]
},
"tls": {"type": "boolean"}
}
}
},
"config": {
"type": "object",
"description": "Kafka broker config overrides (server.properties)",
"additionalProperties": {"type": "string"}
}
}
},
"zookeeper": {
"type": "object",
"description": "ZooKeeper configuration (for non-KRaft mode)",
"properties": {
"replicas": {
"type": "integer",
"minimum": 1,
"description": "Number of ZooKeeper pods"
},
"storage": {
"type": "object",
"properties": {
"type": {"type": "string"},
"size": {"type": "string"}
}
}
}
},
"entityOperator": {
"type": "object",
"description": "Entity Operator configuration",
"properties": {
"topicOperator": {"type": "object"},
"userOperator": {"type": "object"}
}
}
}
}
}
}