Skip to main content

KafkaOffsetReset CRD

The KafkaOffsetReset custom resource resets consumer group offsets on a Kafka cluster.

Full Specification

apiVersion: kafka.oso.sh/v1alpha1
kind: KafkaOffsetReset
metadata:
name: offset-reset
namespace: kafka-backup
spec:
kafkaCluster:
bootstrapServers:
- kafka-0.kafka.svc:9092
- kafka-1.kafka.svc:9092
securityProtocol: SASL_SSL
caSecret: # optional: separate CA secret (e.g. Strimzi)
name: cluster-ca-cert
caKey: ca.crt
tlsSecret:
name: kafka-tls
caKey: ca.crt
saslSecret:
name: kafka-credentials
mechanism: SCRAM-SHA-512
connection:
connectionsPerBroker: 4

consumerGroups:
- order-processor
- payment-handler

topics:
- orders
- payments

resetStrategy: to-timestamp
resetTimestamp: 1713009600000
resetOffset: null

parallelism: 50
dryRun: false
continueOnError: false
snapshotBeforeReset: true

offsetMappingRef:
restoreName: production-restore
path: /tmp/offset-mapping.json
pvcName: restore-workspace

Spec Fields

kafkaCluster

FieldTypeRequiredDescription
bootstrapServers[]stringYesKafka broker addresses
securityProtocolstringNoPLAINTEXT, SSL, SASL_PLAINTEXT, or SASL_SSL
tlsSecretobjectNoTLS certificate secret reference
caSecretobjectNoSeparate CA certificate secret (e.g. Strimzi cluster CA). Overrides caKey in tlsSecret when both are set
saslSecretobjectNoSASL credentials secret reference
connectionobjectNoKafka TCP connection tuning, including connectionsPerBroker

resetStrategy

ValueDescription
to-earliestReset to earliest available offset
to-latestReset to latest offset
to-timestampReset to the first offset at or after resetTimestamp
to-offsetReset to resetOffset
from-mappingReset using an offset mapping from a restore operation

Options

FieldTypeDefaultDescription
consumerGroups[]stringRequiredConsumer groups to reset
topics[]string[]Topics to reset; empty resets all topics for the group
resetTimestampintunsetEpoch milliseconds for to-timestamp
resetOffsetintunsetTarget offset for to-offset
parallelismint50Bulk reset parallelism
dryRunboolfalseValidate without committing offsets
continueOnErrorboolfalseContinue if one group fails
snapshotBeforeResetbooltrueCreate a rollback snapshot first
offsetMappingRefobjectunsetRestore offset mapping reference for from-mapping

Examples

Reset to Earliest

apiVersion: kafka.oso.sh/v1alpha1
kind: KafkaOffsetReset
metadata:
name: reset-to-earliest
spec:
kafkaCluster:
bootstrapServers:
- kafka:9092
consumerGroups:
- my-consumer-group
resetStrategy: to-earliest

Reset to a Timestamp

apiVersion: kafka.oso.sh/v1alpha1
kind: KafkaOffsetReset
metadata:
name: reset-to-timestamp
spec:
kafkaCluster:
bootstrapServers:
- kafka:9092
consumerGroups:
- order-processor
topics:
- orders
resetStrategy: to-timestamp
resetTimestamp: 1713009600000
snapshotBeforeReset: true

Reset From Restore Mapping

apiVersion: kafka.oso.sh/v1alpha1
kind: KafkaOffsetReset
metadata:
name: reset-from-restore
spec:
kafkaCluster:
bootstrapServers:
- kafka:9092
consumerGroups:
- order-processor
resetStrategy: from-mapping
offsetMappingRef:
restoreName: production-restore

Status

status:
phase: Completed
groupsTotal: 2
groupsReset: 2
groupsFailed: 0
snapshotId: "offset-reset-20260413"
snapshotPath: "/tmp/offset-reset-20260413.json"