Fabric8 Kubernetes Client 6.0.0-RC1 is now available!
On behalf of the Fabric8 team and everyone who has contributed, I'm happy to announce that the Fabric8 Kubernetes Client 6.0.0-RC1
has been released and is now available from Maven Central 🎉.
Thanks to all of you who have contributed with issue reports, pull requests, feedback, and spreading the word with blogs, videos, comments, and so on. We really appreciate your help, keep it up!
This release candidate is the latest milestone for the 6th major version of the Client which comes after several months of hard work and brings performance improvements, and a few killer features. I want to take this opportunity to give a big shout-out to Steven Hawkins who took it upon himself to massively refactor and improve the client. And Andrea Peruffo who started the implementation of the new CRD to Java generator.
Please, be sure to share your feedback and report any issues so that when we cut the GA version in a few weeks everything works for you.
What's new?
Without further ado, let's have a look at the most significant updates:
- Multiple HTTP client implementations
- CRD to Java type generator
- JUnit 5 extension to automate Namespace generation
- 🐛 Many other bug-fixes and minor improvements
Multiple HTTP client implementations
In this release, we've abstracted the underlying OkHTTP client implementation and provided an additional layer to be able to consume other HTTP clients. In addition, we've provided implementations for the vanilla Java HTTP Client (Java 11+), and the Eclipse Jetty HTTP Client.
CRD to Java type generator
One of the main pain points for users implementing operators, or for users who have to interact with them, was the generation of Java types to map resources defined in a Custom Resource Definition (CRD). In this release, we've introduced a new CRD to Java generator that allows you to automatically generate Java types for a provided CRD or list of CRD YAML files.
You can use this generator via the provided Maven Plugin or through its standalone CLI tool.
JUnit 5 extension to automate Namespace generation
This extension allows you to configure your end-to-end (E2E) tests that run in real Kubernetes clusters. The following are some of the features that this extension provides:
- Create and configure an ephemeral Namespace to run your tests on
- Inject a KubernetesClient (or any of its adapted interfaces) to your tests
- Load some initial resources or YAML manifests into your cluster prior to running your tests (and delete them afterward)
- Automatically skip test execution based on cluster-specific conditions
You can check the next YouTube video to learn about these new features in detail and to see what you could potentially achieve with them.
Using this release
If your project is based on Maven, you just need to add the Fabric8 Kubernetes Client to your Maven dependencies:
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>6.0.0-RC1</version>
</dependency>
If your project is based on Gradle, you just need to add the Fabric8 Kubernetes Client to your Gradle dependencies:
dependencies {
api "io.fabric8:kubernetes-client:6.0.0-RC1"
}
Once your project is ready, you can create a new instance of the client to perform operations. In the following code snippet I show you how to instantiate the client and retrieve a list of Pods:
try (KubernetesClient client = new KubernetesClientBuilder().build()) {
client.pods().list().getItems().forEach(p -> System.out.println(p.getMetadata().getName()));
}
Remember that this is a major release with huge improvements and new features, at the expense of some minor breaking changes. Be sure to check the migration guide for the best upgrade experience if you're coming from an earlier version.
How can you help?
If you're interested in helping out and are a first-time contributor, check out the "good first issue" tag in the issue repository. We've tagged extremely easy issues so that you can get started contributing to Open Source.
We're also excited to read articles and posts mentioning our project and sharing the user experience. Giving a star to the project, and spreading the word in general, helps us reach more users and broaden the feedback. Feedback is the only way to improve.
Project Page | Issues | Discussions | Gitter | Stack Overflow