Releases: twmb/kcl
0.18.0
Large release with many intentional breaking changes. Treat this as a
beta for 1.0 -- hopefully the last round of breakage, though further
breaks may happen based on feedback before 1.0 tags. Read the
CHANGELOG
carefully if you script against kcl.
Highlights
- New
kcl fakecommand -- start a kfake cluster in-process for testing, probing, and CI without Docker. - Named
[profiles.NAME]support in the config file with--profile/-C. - Share group client support (KIP-932) --
kcl share-groupsubtree andkcl consume --share-group. - New
kcl topic trim-prefix,kcl topic describe(with sections and health filters),kcl group seek,kcl cluster features,kcl client-metrics. - Global
-B/--bootstrap-serversone-off override. - Global
--help-jsonfor programmatic introspection. - Consistent
--yes/-yconfirmation skipping, standardized exit codes {0, 1, 2}, and JSON output that always lands valid on stdout (errors on stderr). - Binary tags itself with its version on the wire (
ClientID = "kcl/<version>") so brokers can identify kcl in ACL audit logs and metrics. - Config timeouts switched from integer milliseconds to Go duration strings (
broker_timeout = "5s", etc.).
Breaking summary (see CHANGELOG for full detail)
kcl myconfig->kcl profile(old name is a hidden alias).kcl transact,kcl admin delete-records,kcl admin topic alter-config,kcl admin txn unhangremoved; most have direct replacements.- Resource commands (topic, group, acl, cluster, config, quota, logdirs, reassign, user, dtoken, client-metrics, txn) promoted from under
kcl adminto the top level. --execute/--no-confirmstandardized to--yes/-y.--if-exists/--if-not-existsremoved -- non-zero exit codes + JSON output replace them.timeout_msrenamed tobroker_timeout; value format is now a Go duration string.- Column headers in text output no longer contain spaces (
GROUP ID->GROUP-IDetc.).
Upstream
- Builds with Go 1.26.
- franz-go v1.21.0, kadm v1.18.0, kmsg v1.13.1, kfake latest.
Install
go install github.com/twmb/kcl@v0.18.0
or download a pre-built binary below.
0.17.0
0.16.0
0.15.0
0.14.0
- Bumps all deps
- Fixes
kadm admin user-scram altertypo - Supports --as-version for all Kafka versions, and
kcl misc api-versions --versionfor all Kafka versions -- and makes it so no code changes are needed in kcl when franz-go adds support for newer Kafka versions - Builds with go1.21.6
0.13.0
- Bumps all deps
- Now detects Kafka 3.5, and should detect KRaft properly
- Adds a new
tls_insecureoption (thank you @dbudworth!) - Builds with Go 1.20.7
- Fixes bug from 0.12.0 where
kcl admin topic createstopped supporting--config-path(turns out, the bug was isolated to this command only)
0.12.0
0.11.0
This release fixes one minor issues, one feature improvement, and now can detect Kafka 3.4.
Issue: previously, an empty tls struct would be omitted when marshaled, now it is not (meaning tls with no custom certs is preserved). Feature: the myconfig command now can autocomplete available configuration files (thanks @robsonpeixoto, as well for the bug fix!). Kafka 3.4: all deps have been bumped, and the latest franz-go can detect Kafka 3.4 from kcl misc probe-version.
0.10.0
0.9.0
This release contains some nice improvements to kcl produce and kcl consume from @Zach-Johnson:
kcl produce -Znow produces tombstoneskcl produce -pcan now produce to a specific partitionkcl consume's offset flag is now more intelligent and has consume-until semantics
As well, kcl now detects (through kcl misc probe-versions) Kafka 3.0, 3.1, and 3.2. Lastly, modules have been updated, most significantly bumping franz-go from v1.2.3 to v1.6.0, which contains many bug fixes and improvements.