Skip to content

Commit bc1f90f

Browse files
authored
Merge branch 'main' into dependabot/bundler/addressable-2.9.0
2 parents 4d8ceb2 + 45704bc commit bc1f90f

658 files changed

Lines changed: 105760 additions & 33 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ GEM
7777
rb-fsevent (~> 0.10, >= 0.10.3)
7878
rb-inotify (~> 0.9, >= 0.9.10)
7979
mercenary (0.4.0)
80-
nokogiri (1.19.1-arm64-darwin)
80+
nokogiri (1.19.3-arm64-darwin)
8181
racc (~> 1.4)
82-
nokogiri (1.19.1-x86_64-linux-gnu)
82+
nokogiri (1.19.3-x86_64-linux-gnu)
8383
racc (~> 1.4)
8484
pathutil (0.16.2)
8585
forwardable-extended (~> 2.6)

_data/documentation/0_21_0.yaml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
docs:
2+
- title: Proxy Quick Start
3+
description: Start here if you're experimenting with the proxy for the first time.
4+
tags:
5+
- proxy
6+
rank: '000'
7+
path: html/proxy-quick-start
8+
- title: Proxy Guide
9+
description: "Using the Proxy, including configuration, security and operation."
10+
tags:
11+
- proxy
12+
- security
13+
rank: '010'
14+
path: html/kroxylicious-proxy
15+
- title: Record Encryption Quick Start
16+
description: Start here for an encryption-at-rest solution for Apache Kafka®.
17+
tags:
18+
- security
19+
- filter
20+
rank: '011'
21+
path: html/record-encryption-quick-start
22+
- title: Kroxylicious Operator for Kubernetes
23+
description: Using the Kroxylicious Operator to deploy and run the Proxy in a
24+
Kubernetes environment.
25+
tags:
26+
- kubernetes
27+
rank: '020'
28+
path: html/kroxylicious-operator
29+
- title: Record Encryption Guide
30+
description: Using the record encryption filter to provide encryption-at-rest
31+
for Apache Kafka®.
32+
tags:
33+
- security
34+
- filter
35+
rank: '020'
36+
path: html/record-encryption-guide
37+
- title: Kroxylicious Admission Webhook
38+
description: Using the Kroxylicious Admission Webhook to inject proxy sidecars
39+
into application pods in a Kubernetes environment.
40+
tags:
41+
- kubernetes
42+
rank: '021'
43+
path: html/admission-webhook-guide
44+
- title: Record Validation Guide
45+
description: "Using the record validation filter to ensure records follow certain\
46+
\ rules, including schema and signature validity."
47+
tags:
48+
- governance
49+
- filter
50+
rank: '021'
51+
path: html/record-validation-guide
52+
- title: Multi-tenancy Guide
53+
description: Using the multi-tenancy filter to present a single Kafka® cluster
54+
as if it were multiple clusters.
55+
tags:
56+
- filter
57+
rank: '022'
58+
path: html/multi-tenancy-guide
59+
- title: Oauth Bearer Validation guide
60+
description: "Using the Oauth Bearer validation filter to validate JWT tokens\
61+
\ received \nfrom Kafka® clients during authentication.\n"
62+
tags:
63+
- filter
64+
- security
65+
rank: '023'
66+
path: html/oauth-bearer-validation
67+
- title: SASL Inspection Guide
68+
description: Using the SASL Inspection filter to infer the client's subject from
69+
its successful authentication exchange with a broker.
70+
tags:
71+
- filter
72+
- security
73+
rank: '023'
74+
path: html/sasl-inspection-guide
75+
- title: Authorization Guide
76+
description: Using the Authorization filter to provide Kafka®-equivalent access
77+
controls within the proxy.
78+
tags:
79+
- security
80+
- filter
81+
rank: '024'
82+
path: html/authorization-guide
83+
- title: Entity Isolation Guide
84+
description: Using the entity isolation filter to give authenticated Kafka® clients
85+
a private namespace within a Kafka cluster.
86+
tags:
87+
- filter
88+
rank: '025'
89+
path: html/entity-isolation-guide
90+
- title: Connection Expiration Guide
91+
description: Using the connection expiration filter to avoid connection skew in
92+
Kubernetes environments.
93+
tags:
94+
- kubernetes
95+
- filter
96+
rank: '030'
97+
path: html/connection-expiration-guide
98+
- title: Developer Quick Start
99+
description: Start here if you're developing a filter for the first time.
100+
tags:
101+
- developer
102+
rank: '031'
103+
path: html/developer-quick-start
104+
- title: Kroxylicious Developer Guide
105+
description: Writing plugins for the proxy in the Java programming language.
106+
tags:
107+
- developer
108+
rank: '032'
109+
path: html/developer-guide
110+
- title: Kroxylicious Javadocs
111+
description: The Java API documentation for plugin developers.
112+
tags:
113+
- developer
114+
path: javadoc/index.html
115+
rank: '033'

_data/kroxylicious.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# The version number of the latest release
2-
latestRelease: 0.20.0
2+
latestRelease: 0.21.0
33

_data/release-schedule.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
releases:
2+
- version: 0.21.0
3+
plannedDate: May 15, 2026
4+
milestoneUrl: https://github.com/kroxylicious/kroxylicious/milestone/27
5+
- version: 0.22.0
6+
plannedDate: July 3, 2026
7+
milestoneUrl: https://github.com/kroxylicious/kroxylicious/milestone/10

_data/release/0_21_0.yaml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#
2+
# Copyright Kroxylicious Authors.
3+
#
4+
# Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
5+
#
6+
7+
releaseNotesUrl: https://github.com/kroxylicious/kroxylicious/releases/tag/v$(VERSION)/
8+
assetBaseUrl: https://github.com/kroxylicious/kroxylicious/releases/download/v$(VERSION)/
9+
assets:
10+
- name: Proxy
11+
description: The proxy application.
12+
downloads:
13+
- format: zip
14+
path: kroxylicious-app-$(VERSION)-bin.zip
15+
- format: tar.gz
16+
path: kroxylicious-app-$(VERSION)-bin.tar.gz
17+
- name: Operator
18+
description: The Kubernetes operator.
19+
downloads:
20+
- format: zip
21+
path: kroxylicious-operator-$(VERSION).zip
22+
- format: tar.gz
23+
path: kroxylicious-operator-$(VERSION).tar.gz
24+
- name: Webhook
25+
description: The Kubernetes admission webhook
26+
downloads:
27+
- format: zip
28+
path: kroxylicious-admission-$(VERSION).zip
29+
- format: tar.gz
30+
path: kroxylicious-admission-$(VERSION).tar.gz
31+
images:
32+
- name: Proxy
33+
url: https://quay.io/repository/kroxylicious/proxy?tab=tags
34+
registry: quay.io/kroxylicious/proxy
35+
tag: $(VERSION)
36+
digest: sha256:6bb6612d7f223eeee226fe656bbc5ebd9e41f03fec78e22df975ff810ea71c42
37+
- name: Operator
38+
url: https://quay.io/repository/kroxylicious/operator?tab=tags
39+
registry: quay.io/kroxylicious/operator
40+
tag: $(VERSION)
41+
digest: sha256:5d87fa606143dbefc2327308a936617cee8e31b6b942026951939a309d55787a
42+
- name: Webhook
43+
url: https://quay.io/repository/kroxylicious/webhook?tab=tags
44+
registry: quay.io/kroxylicious/webhook
45+
tag: $(VERSION)
46+
digest: sha256:b48b50754e6820b6d23a318a89d4f4daecf39c67db137cd86f5ee5a5326a58fb

_includes/footer.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ <h1 class="fs-5">Links</h1>
5151
Download
5252
</a>
5353
</li>
54+
<li class="mb-2">
55+
<a class="text-body link-underline-dark link-underline-opacity-0 link-underline-opacity-10-hover" href="{{ '/release-schedule/' | absolute_url }}">
56+
Release Schedule
57+
</a>
58+
</li>
5459
<li class="mb-2">
5560
<a class="text-body link-underline-dark link-underline-opacity-0 link-underline-opacity-10-hover" href="{{ '/quickstarts/' | absolute_url }}">
5661
Quickstarts
@@ -101,11 +106,6 @@ <h1 class="fs-5">Community</h1>
101106
Issues
102107
</a>
103108
</li>
104-
<li class="mb-2">
105-
<a class="text-body link-underline-dark link-underline-opacity-0 link-underline-opacity-10-hover" href="https://github.com/kroxylicious/kroxylicious/discussions" target="_blank" rel="noopener">
106-
Discussions
107-
</a>
108-
</li>
109109
<li class="mb-2">
110110
<a class="text-body link-underline-dark link-underline-opacity-0 link-underline-opacity-10-hover" href="https://github.com/kroxylicious/design" target="_blank" rel="noopener">
111111
Design
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
layout: post
3+
title: "Kroxylicious release 0.21.0"
4+
date: 2026-05-15 00:00:00 +0000
5+
author: "Rob Young"
6+
author_url: "https://github.com/robobario"
7+
# noinspection YAMLSchemaValidation
8+
categories: blog kroxylicious-proxy releases
9+
tags: [ "releases", "kroxylicious-proxy" ]
10+
---
11+
12+
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. We also have a [video guide](https://www.youtube.com/watch?v=BuDJfMufm60) to the release.
13+
14+
Here are the highlights:
15+
16+
### Alpha: Kubernetes Admission Webhook for Sidecar Injection
17+
18+
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.
19+
20+
See the [admission webhook guide](https://kroxylicious.io/documentation/0.21.0/html/admission-webhook-guide/) in the documentation for installation and usage.
21+
22+
### Graceful Connection Draining
23+
24+
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.
25+
26+
### HAProxy PROXY Protocol Support
27+
28+
[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.
29+
30+
### Strimzi Integration Enhancements
31+
32+
[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)
33+
34+
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.
35+
36+
### AWS KMS Improvements
37+
38+
[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.
39+
40+
### Dynamic TLS Credential Selection
41+
42+
[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.
43+
44+
### Schema Validation Enhancements
45+
46+
[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).
47+
48+
### Container Image Rename
49+
50+
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.
51+
52+
### Community Contributions
53+
54+
This release saw exceptional contributions from the community, with commits landed from:
55+
56+
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
57+
58+
Thank you to everyone who contributed!
59+
60+
### Artefacts
61+
62+
Binary distributions and container images are available on the [download](https://kroxylicious.io/download/0.21.0/) page.
63+
64+
### Feedback
65+
66+
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.
67+
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 %}).

community-call.ics

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,9 @@ RRULE:FREQ=WEEKLY;INTERVAL=4;BYDAY=TH
1414
EXDATE:20261231T080000Z
1515
SUMMARY:Kroxylicious Community Call
1616
DESCRIPTION:An opportunity to talk about Kroxylicious with the people working on it.\n
17-
Click to join:
18-
https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
19-
bbb8aef920c240112935c2d4742c3b1b38a34588 \n
20-
URL:https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
21-
bbb8aef920c240112935c2d4742c3b1b38a34588
22-
LOCATION:https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
23-
bbb8aef920c240112935c2d4742c3b1b38a34588
17+
Click to join: https://meet.google.com/qsi-htyr-phq \n
18+
URL:https://meet.google.com/qsi-htyr-phq
19+
LOCATION:https://meet.google.com/qsi-htyr-phq
2420
END:VEVENT
2521
BEGIN:VEVENT
2622
UID:evening-series@kroxylicious.io
@@ -30,12 +26,8 @@ DTEND:20260311T204500Z
3026
RRULE:FREQ=WEEKLY;INTERVAL=4;BYDAY=WE
3127
SUMMARY:Kroxylicious Community Call
3228
DESCRIPTION:An opportunity to talk about Kroxylicious with the people working on it.\n
33-
Click to join:
34-
https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
35-
bbb8aef920c240112935c2d4742c3b1b38a34588 \n
36-
URL:https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
37-
bbb8aef920c240112935c2d4742c3b1b38a34588
38-
LOCATION:https://meet.jit.si/moderated/87697d32deaa8cbd8b3b96e1
39-
bbb8aef920c240112935c2d4742c3b1b38a34588
29+
Click to join: https://meet.google.com/txh-iuir-jdd \n
30+
URL:https://meet.google.com/txh-iuir-jdd
31+
LOCATION:https://meet.google.com/txh-iuir-jdd
4032
END:VEVENT
4133
END:VCALENDAR

documentation/0.15.0/html/record-encryption-quickstart/content.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ <h2 id="what_next">13. What next?</h2>
424424
<p>Learn more from the <a href="../record-encryption-guide/">Kroxylicious Record Encryption guide</a> and from the <a href="../kroxylicious-operator/">Kroxylicious Operator for Kubernetes guide</a></p>
425425
</div>
426426
<div class="paragraph">
427-
<p>You are also welcome to come talk to us. Chat with us in <a href="https://kroxylicious.slack.com//">Slack</a> or start a <a href="https://github.com/kroxylicious/kroxylicious/discussions">Github Discussion</a>.</p>
427+
<p>You are also welcome to come talk to us. Chat with us in <a href="https://kroxylicious.slack.com//">Slack</a>.</p>
428428
</div>
429429
</div>
430430
</div>

documentation/0.16.0/html/record-encryption-quickstart/content.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ <h2 id="what_next">13. What next?</h2>
424424
<p>Learn more from the <a href="../record-encryption-guide/">Kroxylicious Record Encryption guide</a> and from the <a href="../kroxylicious-operator/">Kroxylicious Operator for Kubernetes guide</a></p>
425425
</div>
426426
<div class="paragraph">
427-
<p>You are also welcome to come talk to us. Chat with us in <a href="https://kroxylicious.slack.com//">Slack</a> or start a <a href="https://github.com/kroxylicious/kroxylicious/discussions">Github Discussion</a>.</p>
427+
<p>You are also welcome to come talk to us. Chat with us in <a href="https://kroxylicious.slack.com//">Slack</a>.</p>
428428
</div>
429429
</div>
430430
</div>

0 commit comments

Comments
 (0)