-
Notifications
You must be signed in to change notification settings - Fork 12
0.21.0 blog #256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
0.21.0 blog #256
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| --- | ||
| layout: post | ||
| title: "Kroxylicious release 0.21.0" | ||
| date: 2026-05-15 00:00:00 +0000 | ||
| author: "Rob Young" | ||
| author_url: "https://github.com/robobario" | ||
| # noinspection YAMLSchemaValidation | ||
| categories: blog kroxylicious-proxy releases | ||
| tags: [ "releases", "kroxylicious-proxy" ] | ||
| --- | ||
|
|
||
| We're excited to announce the release of [Kroxylicious 0.21.0](https://github.com/kroxylicious/kroxylicious/releases/tag/v0.21.0)! This release brings significant new capabilities for Kubernetes environments, enhanced observability, and improved AWS integration. It's been a great open source effort, with a lot of features and fixes coming from the community, so thank you all! Check out the full [Changelog](https://github.com/kroxylicious/kroxylicious/blob/main/CHANGELOG.md#0210) for everything including deprecations, changes, and removals. | ||
|
|
||
| Here are the highlights: | ||
|
|
||
| ### Alpha: Kubernetes Admission Webhook for Sidecar Injection | ||
|
|
||
| The headline feature is our new Kubernetes admission webhook for automatic sidecar injection. This alpha release enables transparent Kafka protocol proxying without any application code changes. Define your sidecar configuration with the `KroxyliciousSidecarConfig` CRD, and the webhook automatically injects the proxy sidecar into matching pods when they are created (note that once created the proxy will not be updated, and must be recreated to reflect changes in the `KroxyliciousSidecarConfig`). Perfect for adding encryption, validation, or multi-tenancy capabilities to existing Kafka applications. | ||
|
|
||
| See the [admission webhook guide](https://kroxylicious.io/documentation/0.21.0/html/admission-webhook-guide/) in the documentation for installation and usage. | ||
|
|
||
| ### Graceful Connection Draining | ||
|
|
||
| Virtual clusters now support graceful connection draining during shutdown. [Configure](https://github.com/kroxylicious/kroxylicious/issues/3968) `drainTimeout` on your virtual cluster, and the proxy will stop accepting new connections while waiting for in-flight requests to complete before shutting down. New metrics track whether disconnections completed gracefully or hit the timeout. Essential for zero-downtime deployments and rolling updates in Kubernetes. Sidebar: while we are talking about restarts and deployments, there is also a [Connection Expiration Filter](https://kroxylicious.io/documentation/0.21.0/html/connection-expiration-guide/) which will help rebalance your connections over time. | ||
|
|
||
| ### HAProxy PROXY Protocol Support | ||
|
|
||
| [Hrishabh Gupta](https://github.com/hrishabhg) added HAProxy PROXY protocol support. Configure `proxy.proxyProtocol.mode` to `enabled`, and the proxy expects the PROXY protocol header before the TLS handshake (or first Kafka RPC if kroxylicious is not terminating TLS). This enables deployment behind HAProxy or other load balancers that use PROXY protocol, and in future could enable new topologies. For example, you could terminate TLS at the load-balancer and pass the SNI hostname information to kroxylicious via the PROXY Protocol. The load balancer would handle TLS computation and certificate rotation, while the Proxy could then offer a single port for all traffic and not terminate TLS. | ||
|
|
||
| ### Strimzi Integration Enhancements | ||
|
|
||
| [Shubham Rawat](https://github.com/ShubhamRwt) enhanced the Kubernetes operator with automatic TLS trust discovery for Strimzi-managed Kafka clusters. Set `trustStrimziCaCertificate` in your KafkaService, and the operator automatically configures the proxy to trust the Strimzi-signed cluster certificates. One less manual step when integrating with Strimzi. (Note that the Strimzi CA secret must be in the same namespace as the KafkaService) | ||
|
|
||
| This release also upgrades Strimzi support to version 1.0.0. If you're using the Strimzi integration feature (`spec.strimziKafkaRef` in KafkaService CR), Strimzi 0.49.0 or later is now required. | ||
|
|
||
| ### AWS KMS Improvements | ||
|
|
||
| [Oleksiy Pylypenko](https://github.com/oleksiyp) has extended the Record Encryption AWS KMS, added native support for IRSA (IAM Roles for Service Accounts) and EKS Pod Identity credential providers. The credential configuration has been restructured under a unified `credentials` node, with new `credentials.webIdentity` and `credentials.podIdentity` options for EKS workloads. Existing configurations using top-level `longTermCredentials` or `ec2MetadataCredentials` continue to work unchanged. See the [Proxy Guide](https://kroxylicious.io/documentation/0.21.0/html/record-encryption-guide/#proc-aws-kms-setup-application-identity-pod-identity-record-encryption) for details. | ||
|
|
||
| ### Dynamic TLS Credential Selection | ||
|
|
||
| [Paco Viramontes](https://github.com/kidpollo) implemented a [new plugin API](https://github.com/kroxylicious/design/blob/main/proposals/011-plugin-api-to-select-tls-credentials-for-server-connection.md) enabling dynamic TLS credential selection for upstream connections. Implement `ServerTlsCredentialSupplier` to select different client certificates for the connection from kroxylicious to a target cluster, based on the TLS certificates sent from the client to kroxylicious. This dynamic selection allows Implementors to build their own complex mutual TLS client certificate selection logic. | ||
|
|
||
| ### Schema Validation Enhancements | ||
|
|
||
| [Carles Arnal](https://github.com/carlesarnal) updated the record validation filter to support Avro and Protobuf schema validation alongside the existing JSON schema support. Validate your records against schemas in Apicurio Registry regardless of serialization format. See the docs for `schemaType` [here](https://kroxylicious.io/documentation/0.21.0/html/record-validation-guide#proc-configuring-record-validation-filter-record-validation). | ||
|
|
||
| ### Container Image Rename | ||
|
|
||
| The primary proxy container image has been renamed from `quay.io/kroxylicious/kroxylicious` to `quay.io/kroxylicious/proxy`. The operator automatically uses the new image name. If you're deploying the proxy image directly (without the operator), update your deployment configurations. We will continue publishing new public images to `quay.io/kroxylicious/kroxylicious`, but it is deprecated and will be removed in a future release. | ||
|
|
||
| ### Community Contributions | ||
|
|
||
| This release saw exceptional contributions from the community, with commits landed from: | ||
|
|
||
| Carles Arnal, Dahyun Woo, Dan Vulpe, Francisco Vila, Hrishabh Gupta, Keith Wall, Ken Huang, Liberty-Swine, m1a2st, Mario Salinas, Matt Van Horn, Mirtunjay Singh, msalinas-se, Oleksiy Pylypenko, Paco Viramontes, PaulRMellor, Piotr Płaczek, Robert Young, Sam Barker, Shubham Rawat, Tanner Smith, Tom Bentley, Trevin Chow, Urjit Patel, ZhangDT | ||
|
|
||
| Thank you to everyone who contributed! | ||
|
|
||
| ### Artefacts | ||
|
|
||
| Binary distributions and container images are available on the [download](https://kroxylicious.io/download/0.21.0/) page. | ||
|
|
||
| ### Feedback | ||
|
|
||
| We'd love to hear from you! Whether you're kicking the tyres, running Kroxylicious in production, or just find the project interesting — drop by and say hello. | ||
| You can reach us through [Slack](https://kroxylicious.slack.com), [GitHub](https://github.com/kroxylicious/kroxylicious/issues) or even [bsky](https://bsky.app/profile/kroxylicious.io), or tell us in person on one of our upcoming [community calls]({% link join-us/community-call/index.md %}). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
kroxylicious-docs also needs to build a bunch of stuff like api modules to grab up the javadoc