Releases: mostafa/xk6-kafka
v0.18.1
This release contains a new feature, contributed by @doxsch. Users now have the flexibility to load certificates and keys in multiple formats: as strings or files. The feature automatically determines the format based on the input provided.
When a string is provided, the extension verifies if it is a valid PEM certificate. If it passes the validation, the certificate is loaded as is. Alternatively, if the input does not meet the PEM certificate criteria, the extension interprets it as a file path and attempts to load the corresponding file.
In the event that neither method succeeds, the extension will gracefully handle the situation and provide an informative error message to assist users in troubleshooting.
What's Changed
New Contributors
Full Changelog: v0.18.0...v0.18.1
v0.18.0
This release contains a features, a few fixes and upgrade of dependencies, as mentioned below:
- Support for JKS keystores are added. Using the
LoadJKS
function, the users can load and extract certificates and private keys from their desired JKS keystore and store them in the current working directory as PEM-encoded plain-text files. The return value of the function is the path to all the extracted files, which can be fed to theTLSConfig
object. To learn more about this feature, see thetest_tls_with_jks.js
example script. - Metrics are updated with two new metrics:
kafka_writer_batch_seconds
andkafka_writer_batch_queue_seconds
. Both are trend metrics and measure the time it takes to write a batch and to queue the next batch. For more information, see the list of emitted metrics. - Dependencies are upgraded to the latest version: this include the update of k6 v0.44.1, which is the latest version at the time of writing this release notes.
- JS API docs are updated to fix issues, typos and reflect the changes made before and during this release.
- The official Docker images are now signed with cosign using a keyless method.
- Other fixes and improvements has been made to make the project more accessible and efficient.
What's Changed
- Support load java keystores (JKS) by @mostafa in #209
- Fixes after upgrade of dependencies by @mostafa in #216
- Add new metrics by @mostafa in #217
- Save files from JKS by @mostafa in #218
Full Changelog: v0.17.0...v0.18.0
v0.17.0
This release contains the following changes:
- AWS IAM SASL mechanism is added for authenticating against AWS MSK, thanks to @gokceyalcin for the initial PR.
- k6 is updated to v0.43.0 and the rest of the dependencies are also updated to their latest versions.
- Time constants are exported to JS.
- Add a few more FAQ to README for autocompletion in IDEs and usage of time constants.
What's Changed
Full Changelog: v0.16.1...v0.17.0
v0.16.1
This release contains some changes and fixes:
- The
ReaderConfig
is updated with new parameters. - The
Reader
now validates all the consumer-group-specific parameters. - A new script,
test_consumer_group.js
is added for reading from a consumer group using agroupID
and other parameters. - JS API docs are updated accordingly.
- The description of emitted metrics and their type are added to the README.
- k6 is bumped to v0.42.0 and other dependencies are updated.
What's Changed
- Add
readBatchTimeout
toReaderConfig
by @mostafa in #188 - Fix
ReaderConfig
's default values and a few other fixes by @mostafa in #189
Full Changelog: v0.16.0...v0.16.1
v0.16.0
v0.15.1
This release fixes a bug reported by @SameeranB in #174 that caused k6 internal gRPC module to fail when the Kafka extension is imported.
What's Changed
Full Changelog: v0.15.0...v0.15.1
v0.15.0
k6 v0.41.0 was released yesterday! 🎉
Since I am working for the same company, I usually update the extension as soon as I get the information about the release and changes, and this one is no exception. In this release I upgraded k6 to version 0.41.0 as a dependency. There were breaking changes to the metrics API, which I fixed. I also updated all the other dependencies and fixed two minor issues that was failing the tests.
What's Changed
- Integrate with k6 v0.41.0 by @mostafa in #173
- Fix issues by @mostafa in f3c80c6
- Update dependencies to latest versions by @mostafa in 60c4e1e
Full Changelog: v0.14.2...v0.15.0
v0.14.2
In this release an issue is fixed that was reported in #150 and #166. The issue was that mutual TLS (mTLS), aka. two-way TLS, was enforced when configuring TLS via the TLSConfig
object, but sometimes the users needed to have normal one-way TLS, for example in Schema Registry config. Now the TLSConfig
object can be used in three different ways:
- Enabling TLS to just use system certificates:
const tlsConfig = {
enableTls: true,
insecureSkipTlsVerify: false,
minVersion: TLS_1_2,
};
- Enabling one-way TLS using a custom server certificate:
const tlsConfig = {
enableTls: true,
insecureSkipTlsVerify: false,
minVersion: TLS_1_2,
serverCaPem: "/path/to/your/server-ca.pem",
};
- Enabling two-way mTLS using a custom server certificate and client certificate and key files:
const tlsConfig = {
enableTls: true,
insecureSkipTlsVerify: false,
minVersion: TLS_1_2,
serverCaPem: "/path/to/your/server-ca.pem",
clientCertPem: "/path/to/your/client-cert.pem",
clientKeyPem: "/path/to/your/client-key.pem",
};
What's Changed
- Fix bug in TLS config handling by @mostafa in #170
- Update README and API docs by @mostafa in 09675bc f62f7ab 293f1f0
- Update dependencies to latest version by @mostafa in e066e68
Full Changelog: v0.14.1...v0.14.2
v0.14.1
v0.14.0
In this release, I put a lot of effort into exporting the Schema Registry class to the JS API and changed the (de)serialization to make it explicit so that the users can (de)serialize their data manually. The following is what went into this release:
-
The significant refactorings of the extensions (#44) are finished.
-
Much like the last few releases, this one contains breaking changes to the JS API and how it (de)serializes data (#50, #53, #54, and #55). The usage of
schemaRegistry.serialize
andschemaRegistry.deserialize
can be seen in the example scripts.import { SchemaRegistry } from "k6/x/kafka"; const schemaRegistry = SchemaRegistry({ url: "...", basicAuth: {...}, tls: {...} }); schemaRegistry.getSchema({ version: 0, subject: "..." }); // 0 means latest schema schemaRegistry.createSchema({ version: 0, subject: "...", schema: "...", schemaType: "AVRO" }); schemaRegistry.getSubjectName({ element: "...", topic: "...", schema: "...", subjectNameStrategy: "..." }); // You can pass a string, byte array, and JSON objects as data. Regardless of the data, the schemaType must also be passed. // For schemaless data, like string, only the data and the schemaType (SCHEMA_TYPE_STRING) should be passed. schemaRegistry.serialize({ schema: "...", data: "...", schemaType: SCHEMA_TYPE_AVRO }); schemaRegistry.deserialize({ schema: "...", data: "...", schemaType: SCHEMA_TYPE_AVRO });
-
The JS API docs now reside in the
api-docs
directory. -
The data can now be passed to
consume
orproduce
as a string, byte array, or JSON (#116) format (without stringification). However, theschemaType
should be set. And in the case of JSONSchema and Avro, theschema
should also be set. -
The test and the build CI pipelines are also fixed.
-
All the test scripts run on the test CI pipeline now, except the
scripts/test_sasl_auth.js
(#48 and f2bd747). -
The SBOMs are generated for both the source code and the Docker image (#78) and will be stored on the release page (#152).
-
The Docker image is now signed by the
cosign
, and the signature is verified and stored on Docker Hub (#155, 052f73f, 4fb3c33, e94e20b, 9949398, ec861bc, and f66ef7b). -
The purpose of this extension is not to load-test the Schema Registry. Thus, the schema is cached now by the extension, effectively bypassing the schema caching in the
srclient
library (that can also be enabled, though), as raised by @oscar067 in #146 and his initial fix in #147 (#151).
What's Changed
- Export Schema Registry client and the serdes functionality by @mostafa in #149
- Store SBOMs in a better place by @mostafa in #153
- Generate SBOM from the latest uploaded Docker image and store it on the release page by @mostafa in #154
- Sign the Docker image with
cosign
by @mostafa in #157 - Fix no exception being raised on writer errors by @mostafa in #158
- Enable selective schema caching by @mostafa in #151 (originally by @oscar067 in #146 and #147)
- Lots of changes to docs, README, and the CI pipelines by @mostafa in f2bd747, 20859bc, ad75602, a7e5b37, e3615e0, c881647, 052f73f, 4fb3c33, e94e20b, 9949398, ec861bc, and f66ef7b.
Full Changelog: v0.13.1...v0.14.0