All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- #209 Allow configuring basicAuth for avro schema registry
- #207 Allow configuring TLS for avro schema registry
- #193 Print group instance IDs in
describe consumer-group
command
- #151 Get topics command should not require describe permission
- #182 Make isolationLevel configurable and change default to 'readCommitted'
- #184 Added option to show default configs when describing topics
- #183 Add command
delete records
to delete records from topic
- #180 Change default for replication-factor when creating topics
- #171 Support for reset command to reset offset to offset from provided datetime
- #172 Support for json format in produce command
- #165 Kubernetes pod name now always includes random suffix
- #165 fix parsing array params in kubernetes mode
- #162 Fix
consumer-group
crashes when a group member has no assignment - #160 Fix kubectl version detection
- #159 Add ability to read config file from
$PWD/kafkactl.yml
- #121 Support message consumption with a specified timestamp range
- #144 Dependencies have been updated
- #138 remove default value for
BROKERS
in Dockerfiles
- #123 Make avro json codec configurable and switch default to standard json
- #105 Add replication factor to
get topics
- Add
clone
command forconsumer-group
andtopic
- #108 Fix "system root pool not available on Windows" by migrating to go 1.19
- Print topic configs when yaml and json output format used with
-c
flag
- #129 Fix tombstone record handling if protobuf encoding used.
- allow producing messages where only key is protobuf encoded
- Implicitly extend
--proto-import-path
with existing file path from--proto-file
so that the parameter can be neglected in some cases.
- #127 the commands
create consumer-group
andreset consumer-group-offset
can now be called with multiple--topic
parameters. Additionally,reset consumer-group-offset
can be called with--all-topics
parameter, which will reset all topics in the group.
- #124 make sure input buffer can hold long messages when producing messages to a topic
- add parameter
--max-messages
to consume command, to stop consumption after a fixed amount of messages - #60 add parameter
--group
to consume command, which allows consuming as a member of the given consumer group
- add config options
image
,imagePullSecret
in order to pull kafkactl from private registry when running in k8s (fixes #116).
- make sure kafkactl pod name is always lowercase only
-
#112 make
maxMessageBytes
configurable in produce command.⚠️ this is a breaking change since the format of theconfig.yml
has been changed in order to group producer related configurations undercontext.producer
.
- fixed error handling for describe topic command. previously errors for requests to describe partitions had been swallowed.
- changed naming of kafkactl pod when running in k8s. pod is now named based on clientID specified in config.yml
- #110 Added protobuf support to consume/produce commands (@xakep666 thank you for the contribution)
- fixed parsing of
--replicas
flag foralter partition
when running against kubernetes cluster
- Add new command
describe broker
to view broker configurations
- #106 Do not check if topic is available before produce, because otherwise autoTopicCreation does not work
- fix brew warning (goreleaser/goreleaser#2591)
- Added parameter
--null-value
to produce command in order to produce a null value (tombstone)
- Added new command
delete consumer-group-offset
to delete a consumer-group-offset - Add new command
get brokers
to get the list of brokers advertised by Kafka
- SASL mechanism setting is now supported in
kafkactl attach
- Filter -C and --config-file option in kubernetes context
- Support
delete
command when accessing a remote cluster deployed on kubernetes
- Added new commands
delete consumer-group
to delete a consumer-group
- Calls to the AVRO schema registry are now cached correctly
- alter topic should fail, when trying to set number of partitions to the current number of partitions
- the default for required-acks in the producer has been changed to WaitForLocal in order to align with the JVM Producer. In addition, this setting is now also configurable.
- fix version prefix in aur package. kubernetes support not working without the prefix.
- Compatibility with new versions of
kubectl
by removing deprecated parameter from the command - Replace
CMD
withENTRYPOINT
in Ubuntu Dockerfile to restore behavior documented in readme
- SASL mechanism support now also implemented for cluster admin
- process no longer gets stuck when deserialization error occurs
- calls to avro schema registry are now cached in memory to improve performance
- Updated avro library to latest version (v2.10.0)
- Introduce configuration options to configure
sasl.mechanism
in order to usescram-sha512
orscram-sha256
instead ofplaintext
. - Added new commands
get acl
,create acl
,delete acl
to manage Kafka ACLs with kafkactl
- Fixed Ctrl+C not working to stop kafkactl
- Add parameter
--skip-empty
todescribe topic
command which allows skipping/hiding empty partitions.
describe topic
now includesEMPTY
field, which directly shows if a partition contains messages.
- Add parameter
--replication-factor
toalter topic
command which allows changing the replication factor of a topic. Note that kafka >= 2.4.0.0 is required, otherwise the relevant api calls are not available. - Added command
alter partition
which currently only enables to manually assign broker replicas to a partition. Note that kafka >= 2.4.0.0 is required, otherwise the relevant api calls are not available. - Added
requestTimeout
config to control timeout of admin requests.
- Add certificates to TlsConfig when tls.insecure = true
get consumer-groups -o compact --topic=xyz
no longer ignores the topic parameter
- Ubuntu Docker image has CA certificates installed.
- Scratch Docker image has CA certificates installed.
get consumer-groups
now includes the assigned topics as long as output format is notcompact
.
- TLS configuration now starts off with the System's CA pool instead of a completely empty one. This improves support for AWS MSK with PCAs.
- direct support for kafka clusters running in kubernetes
attach
command to get a bash into kafkactl pod when running in kubernetes
- auto-completion should now work consistent for all supported shells and provides dynamic completion for e.g. names of topics or consumer-groups.
- Add parameters
--key-encoding
,--value-encoding
to produce command to write messages from hex/base64 - Add parameters
--key-encoding
,--value-encoding
to consume command to print messages as hex/base64 - auto-completion now also works inside ubuntu docker image
- bash auto-completion should work out of the box, when kafkactl is installed via snap
- improved and documented overriding config keys via environment variables
- Binary (non-string) messages are auto-detected and printed as base64 by default
- Add parameter
--header
to produce command to include message headers when writing messages
- generation of commands and error handling have been refactored in order to allow for better testability
- dockerfile is build from UBUNTU:LATEST instead of SCRATCH
- loading custom CA cert failed in 1.8.0
- add configuration option
sasl
for connection with SASL PLAIN username and password - show oldestOffset,lead values when describing consumer groups
- allow omitting the CA cert
- show error message when trying to reset offset of a non-empty group
- allow enabling tls without specifying additional options
- Add configuration option
tlsInsecure
to be able to connect with TLS to IP address served brokers. - Add parameter
--file
to produce command to allow reading messages from a file directly - Add parameter
--lineSeparator
to produce command to split multiple messages by a custom delimiter
- Support for Kafka 2.4.0
- Add support for different output format for
describe consumer-groups
,describe topic
and change default output format. - Add parameter
--print-configs
todescribe topic
to control if configs shall be printed - Add parameter
--print-members
todescribe consumer-groups
to control if members shall be printed - Add parameter
--print-topics
todescribe consumer-groups
to control if topics shall be printed - Add alias
list
forget
command (e.g.list topics
) - kafkactl is now installable with
homebrew
- a docker image is now generated with every release
- parameter
--partitioner
for produce command now supports additional partitionershash-ref
andmurmur2
. The default has also been changed tomurmur2
in order to be consistent with the java kafka client. defaultPartitioner
can now be configured for a context in the config file
- Add rate limiting for multiple messages with
--rate
flag - A default config file is now generated when no config was found
- Add parameter
--print-headers
to print kafka message headers when consuming messages - Add parameter
--tail
to consume only the lastn
messages from a topic - Add parameter
--exit
to stop consuming when the latest offset is reached - Add parameter
--separator
to consume command to customize the separator - Allow producing multiple messages from stdin
- Fixed producing value as key in case an avro schema registry is configured.
- Additional config file locations added. See README.adoc for details
- Added
offset
parameter toconsume
- Support for basic auto completion in fish shell
- Add 'config view` command, to view current config
- Add
get consumer-groups
command to list available consumer groups - Add
describe consumer-group
command to see details of consumer group - Add
reset offset
command to reset consumer group offsets
- Improved performance of
get topics
through concurrent requests
- Add Avro schema support in
produce
andconsume
commands
- Add
alter topic
command for increasing partition count and editing topic configs - Add options to read config file from different locations
- Sort result of
kafkactl get topics
consume
now uses a simpler consumer without consumerGroup.- Changed name of global flags to avoid collisions with local flags
- Do not auto-create topics when using
describe
,consume
orproduce
- Initial version