You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1. Some links and text refers to 0.13 where it should be 0.13.0
2. Some links referred to main where they should point at a version
specific location on github, tied to the release tag.
Partially resolveskroxylicious/kroxylicious#2478
Signed-off-by: Robert Young <[email protected]>
<p>A collection of sample filters is available within the Kroxylicious repository for you to download, try out, and customise. You can find them <ahref="https://github.com/kroxylicious/kroxylicious/tree/main/kroxylicious-sample">here</a> for a hands-on introduction to creating your own custom filters.</p>
94
+
<p>A collection of sample filters is available within the Kroxylicious repository for you to download, try out, and customise. You can find them <ahref="https://github.com/kroxylicious/kroxylicious/tree/v0.13.0/kroxylicious-sample">here</a> for a hands-on introduction to creating your own custom filters.</p>
95
95
</div>
96
96
</div>
97
97
<divclass="sect2">
98
98
<h3id="api_docs">2.2. API docs</h3>
99
99
<divclass="paragraph">
100
-
<p>Custom filters are built by implementing interfaces supplied by the <ahref="https://github.com/kroxylicious/kroxylicious/tree/main/kroxylicious-api" target="_blank" rel="noopener">kroxylicious-api</a> module (<ahref="https://mvnrepository.com/artifact/io.kroxylicious/kroxylicious-api">io.kroxylicious:kroxylicious-api</a> on maven central). You can view the javadoc <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/package-summary.html" target="_blank" rel="noopener">here</a>.</p>
100
+
<p>Custom filters are built by implementing interfaces supplied by the <ahref="https://github.com/kroxylicious/kroxylicious/tree/v0.13.0/kroxylicious-api" target="_blank" rel="noopener">kroxylicious-api</a> module (<ahref="https://mvnrepository.com/artifact/io.kroxylicious/kroxylicious-api">io.kroxylicious:kroxylicious-api</a> on maven central). You can view the javadoc <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/package-summary.html" target="_blank" rel="noopener">here</a>.</p>
101
101
</div>
102
102
</div>
103
103
<divclass="sect2">
@@ -138,7 +138,7 @@ <h4 id="specific_message_protocol_filters">2.4.1. Specific Message Protocol Filt
138
138
<divclass="sect4">
139
139
<h5id="examples">Examples</h5>
140
140
<divclass="paragraph">
141
-
<p>To intercept all Fetch Requests your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/FetchRequestFilter.html" target="_blank" rel="noopener">FetchRequestFilter</a>:</p>
141
+
<p>To intercept all Fetch Requests your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/FetchRequestFilter.html" target="_blank" rel="noopener">FetchRequestFilter</a>:</p>
<p>To intercept all Fetch Responses your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/FetchResponseFilter.html" target="_blank" rel="noopener">FetchResponseFilter</a>:</p>
159
+
<p>To intercept all Fetch Responses your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/FetchResponseFilter.html" target="_blank" rel="noopener">FetchResponseFilter</a>:</p>
<p>To intercept all Fetch Requests and all Fetch Responses your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/FetchRequestFilter.html" target="_blank" rel="noopener">FetchRequestFilter</a> and <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/FetchResponseFilter.html" target="_blank" rel="noopener">FetchResponseFilter</a>:</p>
177
+
<p>To intercept all Fetch Requests and all Fetch Responses your class would implement <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/FetchRequestFilter.html" target="_blank" rel="noopener">FetchRequestFilter</a> and <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/FetchResponseFilter.html" target="_blank" rel="noopener">FetchResponseFilter</a>:</p>
<p><ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/RequestFilter.html" target="_blank" rel="noopener">RequestFilter</a> to intercept all requests.</p>
216
+
<p><ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/RequestFilter.html" target="_blank" rel="noopener">RequestFilter</a> to intercept all requests.</p>
217
217
</li>
218
218
<li>
219
-
<p><ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/ResponseFilter.html" target="_blank" rel="noopener">ResponseFilter</a> to intercept all responses.</p>
219
+
<p><ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/ResponseFilter.html" target="_blank" rel="noopener">ResponseFilter</a> to intercept all responses.</p>
<p>The simplest way of managing per-client state is to use member fields. The proxy guarantees that all methods of a given filter instance will always be invoked on the same thread (also true of the CompletionStage completion in the case of <ahref="#sending_asynchronous_requests_to_the_cluster">Sending asynchronous requests to the Cluster</a>). Therefore, there is no need to use synchronization when accessing such fields.</p>
352
352
</div>
353
353
<divclass="paragraph">
354
-
<p>See the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/package-summary.html#implementing.threadSafety" target="_blank" rel="noopener"><code>io.kroxylicious.proxy.filter</code></a> package javadoc for more information on thread-safety.</p>
354
+
<p>See the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/package-summary.html#implementing.threadSafety" target="_blank" rel="noopener"><code>io.kroxylicious.proxy.filter</code></a> package javadoc for more information on thread-safety.</p>
<p>As you have read above, we need to know the API version we want our request to be encoded at. Your filter can discover what versions of an API the Kafka Cluster supports. To do this use the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/ApiVersionsService.html" target="_blank" rel="noopener">ApiVersionsService</a> available from the <code>FilterContext</code> to determine programmatically what versions of an API are support and then write code to make a suitable <code>request</code> object.</p>
574
+
<p>As you have read above, we need to know the API version we want our request to be encoded at. Your filter can discover what versions of an API the Kafka Cluster supports. To do this use the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/ApiVersionsService.html" target="_blank" rel="noopener">ApiVersionsService</a> available from the <code>FilterContext</code> to determine programmatically what versions of an API are support and then write code to make a suitable <code>request</code> object.</p>
<tdclass="content">Kroxylicious provides the guarantee that computation stages chained using the <em>default execution methods</em> are executed on the same thread as the rest of the Filter work, so we can safely mutate Filter members without synchronising. See the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/package-summary.html#implementing.threadSafety" target="_blank" rel="noopener"><code>io.kroxylicious.proxy.filter</code></a> package javadoc for more information on thread-safety.</td>
581
+
<tdclass="content">Kroxylicious provides the guarantee that computation stages chained using the <em>default execution methods</em> are executed on the same thread as the rest of the Filter work, so we can safely mutate Filter members without synchronising. See the <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/package-summary.html#implementing.threadSafety" target="_blank" rel="noopener"><code>io.kroxylicious.proxy.filter</code></a> package javadoc for more information on thread-safety.</td>
582
582
</tr>
583
583
</tbody>
584
584
</table>
@@ -630,10 +630,10 @@ <h5 id="filtering_specific_api_versions">Filtering specific API Versions</h5>
630
630
<divclass="sect3">
631
631
<h4id="filter_construction_and_configuration">2.4.7. Filter Construction and Configuration</h4>
632
632
<divclass="paragraph">
633
-
<p>For Kroxylicious to instantiate and configure your custom filter we use Java’s <ahref="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html" target="_blank" rel="noopener">ServiceLoader</a> API. Each Custom Filter should provide a corresponding <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13/io/kroxylicious/proxy/filter/FilterFactory.html" target="_blank" rel="noopener">FilterFactory</a> implementation that can create an instance of your custom Filter. The factory can optionally declare a configuration class that Kroxylicious will populate (using Jackson) when loading your custom Filter. The module must package a <code>META-INF/services/io.kroxylicious.proxy.filter.FilterFactory</code> file containing the classnames of each filter factory implementation into the JAR file.</p>
633
+
<p>For Kroxylicious to instantiate and configure your custom filter we use Java’s <ahref="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html" target="_blank" rel="noopener">ServiceLoader</a> API. Each Custom Filter should provide a corresponding <ahref="https://javadoc.io/doc/io.kroxylicious/kroxylicious-api/0.13.0/io/kroxylicious/proxy/filter/FilterFactory.html" target="_blank" rel="noopener">FilterFactory</a> implementation that can create an instance of your custom Filter. The factory can optionally declare a configuration class that Kroxylicious will populate (using Jackson) when loading your custom Filter. The module must package a <code>META-INF/services/io.kroxylicious.proxy.filter.FilterFactory</code> file containing the classnames of each filter factory implementation into the JAR file.</p>
634
634
</div>
635
635
<divclass="paragraph">
636
-
<p>For example in the kroxylicious-samples we have the <ahref="https://github.com/kroxylicious/kroxylicious/blob/main/kroxylicious-sample/src/main/java/io/kroxylicious/sample/config/SampleFilterConfig.java">SampleFilterConfig</a> class. This is used in the <ahref="https://github.com/kroxylicious/kroxylicious/blob/main/kroxylicious-sample/src/main/java/io/kroxylicious/sample/SampleFetchResponseFilter.java">SampleFetchResponseFilter</a>). The configuration is routed to the Filter instance via the <ahref="https://github.com/kroxylicious/kroxylicious/blob/main/kroxylicious-sample/src/main/java/io/kroxylicious/sample/SampleFetchResponse.java">SampleFetchResponse</a>.</p>
636
+
<p>For example in the kroxylicious-samples we have the <ahref="https://github.com/kroxylicious/kroxylicious/blob/v0.13.0/kroxylicious-sample/src/main/java/io/kroxylicious/sample/config/SampleFilterConfig.java">SampleFilterConfig</a> class. This is used in the <ahref="https://github.com/kroxylicious/kroxylicious/blob/v0.13.0/kroxylicious-sample/src/main/java/io/kroxylicious/sample/SampleFetchResponseFilter.java">SampleFetchResponseFilter</a>). The configuration is routed to the Filter instance via the <ahref="https://github.com/kroxylicious/kroxylicious/blob/v0.13.0/kroxylicious-sample/src/main/java/io/kroxylicious/sample/SampleFetchResponse.java">SampleFetchResponse</a>.</p>
637
637
</div>
638
638
<divclass="paragraph">
639
639
<p>Then, when we configure a filter in Kroxylicious configuration like:</p>
<p>To use YAML manifest files to install Kroxylicious, download kroxylicious-operator-0.13.zip or kroxylicious-operator-0.13.tar.gz file from the <ahref="https://github.com/kroxylicious/kroxylicious/releases" target="_blank" rel="noopener">GitHub releases page</a>, and extract the files as appropriate (for example using <code>unzip</code> or <code>tar -xzf</code>).</p>
178
+
<p>To use YAML manifest files to install Kroxylicious, download kroxylicious-operator-0.13.0.zip or kroxylicious-operator-0.13.0.tar.gz file from the <ahref="https://github.com/kroxylicious/kroxylicious/releases" target="_blank" rel="noopener">GitHub releases page</a>, and extract the files as appropriate (for example using <code>unzip</code> or <code>tar -xzf</code>).</p>
179
179
</div>
180
180
<divclass="paragraph">
181
181
<p>Each of these archives contains:</p>
@@ -205,7 +205,7 @@ <h3 id="install-cluster-operator-operator">3.3. Installing the Kroxylicious Oper
205
205
<p>You need an account with permission to create and manage <code>CustomResourceDefinition</code> and RBAC (<code>ClusterRole</code>) resources.</p>
206
206
</li>
207
207
<li>
208
-
<p>You have downloaded one of kroxylicious-operator-0.13.zip or kroxylicious-operator-0.13.tar.gz and extracted the contents into the current directory.</p>
208
+
<p>You have downloaded one of kroxylicious-operator-0.13.0.zip or kroxylicious-operator-0.13.0.tar.gz and extracted the contents into the current directory.</p>
<p>The Kroxylicious <ahref="https://github.com/kroxylicious/kroxylicious/tree/main" target="_blank" rel="noopener">binary distribution</a> includes <ahref="https://logging.apache.org/log4j/2.x">log4j2</a> as the default logging backend.</p>
2680
+
<p>The Kroxylicious <ahref="https://github.com/kroxylicious/kroxylicious/releases/download/v0.13.0/kroxylicious-app-0.13.0-bin.zip" target="_blank" rel="noopener">binary distribution</a> includes <ahref="https://logging.apache.org/log4j/2.x">log4j2</a> as the default logging backend.</p>
2681
2681
</div>
2682
2682
<divclass="paragraph">
2683
2683
<p>When using the <code>bin/kroxylicious-start.sh</code> script from the binary distribution, you can set an environment variable to load a custom <code>log4j2</code> configuration file or change the root logging level.</p>
Copy file name to clipboardExpand all lines: documentation/0.13.0/html/record-encryption-guide/content.html
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -408,7 +408,7 @@ <h5 id="establish_an_application_identity_for_the_filter">Establish an applicati
408
408
<divclass="sect4">
409
409
<h5id="testing_the_application_identity_for_the_filter_using_the_cli">Testing the application identity for the filter using the CLI</h5>
410
410
<divclass="paragraph">
411
-
<p>To test whether the application identity and the policy are working correctly, a <ahref="https://raw.githubusercontent.com/kroxylicious/kroxylicious/main/scripts/validate_vault_token.sh">script</a> can be used.</p>
411
+
<p>To test whether the application identity and the policy are working correctly, a <ahref="https://raw.githubusercontent.com/kroxylicious/kroxylicious/v0.13.0/scripts/validate_vault_token.sh">script</a> can be used.</p>
412
412
</div>
413
413
<divclass="paragraph">
414
414
<p>First, as the administrator, create a KEK in the hierarchy at this path <code>transit/keys/KEK_testkey</code>.</p>
0 commit comments