Skip to content

Releases: mostafa/xk6-kafka

v0.18.1

01 Jun 09:36
912ba4d
Compare
Choose a tag to compare

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

  • feat: add support for loading PEM certificates as string as well as file path by @doxsch in #221

New Contributors

Full Changelog: v0.18.0...v0.18.1

v0.18.0

18 May 10:44
de6c4d5
Compare
Choose a tag to compare

This release contains a features, a few fixes and upgrade of dependencies, as mentioned below:

  1. 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 the TLSConfig object. To learn more about this feature, see the test_tls_with_jks.js example script.
  2. Metrics are updated with two new metrics: kafka_writer_batch_seconds and kafka_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.
  3. 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.
  4. JS API docs are updated to fix issues, typos and reflect the changes made before and during this release.
  5. The official Docker images are now signed with cosign using a keyless method.
  6. Other fixes and improvements has been made to make the project more accessible and efficient.

What's Changed

Full Changelog: v0.17.0...v0.18.0

v0.17.0

21 Feb 16:40
fc71c8b
Compare
Choose a tag to compare

This release contains the following changes:

  1. AWS IAM SASL mechanism is added for authenticating against AWS MSK, thanks to @gokceyalcin for the initial PR.
  2. k6 is updated to v0.43.0 and the rest of the dependencies are also updated to their latest versions.
  3. Time constants are exported to JS.
  4. Add a few more FAQ to README for autocompletion in IDEs and usage of time constants.

What's Changed

  • Add AWS IAM SASL mechanism for authenticating against AWS MSK by @mostafa in #193

Full Changelog: v0.16.1...v0.17.0

v0.16.1

23 Jan 13:26
005db43
Compare
Choose a tag to compare

This release contains some changes and fixes:

  1. The ReaderConfig is updated with new parameters.
  2. The Reader now validates all the consumer-group-specific parameters.
  3. A new script, test_consumer_group.js is added for reading from a consumer group using a groupID and other parameters.
  4. JS API docs are updated accordingly.
  5. The description of emitted metrics and their type are added to the README.
  6. k6 is bumped to v0.42.0 and other dependencies are updated.

What's Changed

  • Add readBatchTimeout to ReaderConfig 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

22 Nov 10:57
9b2a826
Compare
Choose a tag to compare

What's Changed

  • Change dot to underscore in metrics separator to be compatible with Prometheus metrics by @rgordill in #177
  • Lint scripts, configs and docs by @mostafa in #178
  • Update dependencies to latest version by @mostafa in #179

New Contributors

Full Changelog: v0.15.1...v0.16.0

v0.15.1

14 Nov 16:13
0811422
Compare
Choose a tag to compare

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

  • Fix gRPC and Kafka module interoperability by removing the field mapper by @mostafa in 0811422

Full Changelog: v0.15.0...v0.15.1

v0.15.0

03 Nov 13:56
f3c80c6
Compare
Choose a tag to compare

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

Full Changelog: v0.14.2...v0.15.0

v0.14.2

19 Oct 19:09
e066e68
Compare
Choose a tag to compare

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:

  1. Enabling TLS to just use system certificates:
const tlsConfig = {
    enableTls: true,
    insecureSkipTlsVerify: false,
    minVersion: TLS_1_2,
};
  1. 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",
};
  1. 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

Full Changelog: v0.14.1...v0.14.2

v0.14.1

09 Sep 22:15
c3591b2
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.14.0...v0.14.1

v0.14.0

14 Aug 20:25
f66ef7b
Compare
Choose a tag to compare

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 and schemaRegistry.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 or produce as a string, byte array, or JSON (#116) format (without stringification). However, the schemaType should be set. And in the case of JSONSchema and Avro, the schema 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

Full Changelog: v0.13.1...v0.14.0