Fabric8 Kubernetes Client 7.4.0 está disponible!
En nombre de todo el equipo de Fabric8
y de todos sus contribuidores, estoy muy contento de anunciar que hemos
liberado
la versión 7.4.0
de Fabric8 Kubernetes Client y que está disponible para su descarga desde
Maven Central 🎉.
Esta es la cuarta versión menor de Fabric8 Kubernetes Client 7, que trae nuevas características, bug fixes y mejoras, minimizando los cambios que puedan romper la compatibilidad. Si vienes de la versión 6, hemos preparado una guía de migración para ayudarte a actualizar tu código a esta nueva versión.
Muchas gracias a todos los que habéis contribuido reportando issues, creando pull requests, dando feedback y promocionando el proyecto mediante blogs, videos, comentarios, etc. Valoramos muchísimo vuestra ayuda ¡seguid así!
Novedades
Sin más dilación, veamos cuáles son las novedades más importantes de esta versión:
- Mejoras en el framework de testing
- Mayor estabilidad en informers y operaciones de watch
- Mejoras en la generación de CRD con soporte para anotaciones
- Mejor manejo de WebSocket y conexiones
- 🐛 Muchas otras mejoras y bug-fixes
Puedes encontrar la lista completa de cambios para esta versión en la release page en GitHub.
No olvides revisar la guía de migración para una actualización sin problemas.
Mejoras en el framework de testing
La experiencia de testing se ha mejorado significativamente en esta versión.
La anotación @EnableKubernetesMockClient
ahora funciona correctamente con tests anidados, resolviendo problemas de integración con JUnit que afectaban la organización y ejecución de tests.
Además, se ha corregido la herencia de KubeApiTest
desde clases base de test, facilitando la estructuración de suites de tests.
Mayor estabilidad en informers y operaciones de watch
Esta versión trae mejoras a la API de Informers.
Ahora puedes usar Informer.isWatching()
para ver el estado subyacente de Watch, proporcionando mejor visibilidad en las operaciones de watch y ayudando con el debugging y monitorización de conexiones de watch de larga duración.
Mejoras en la generación de CRD con soporte para anotaciones
El generador de CRD se ha extendido con soporte para @Annotations
y @Labels
en la generación de CRD. El generador de CRD ahora incluye metadatos de estas anotaciones, facilitando la generación de Custom Resource Definitions completas con anotaciones y labels apropiados.
El java-generator también se ha mejorado para soportar el uso de enumeraciones existentes a través de la configuración extendida de existingJavaTypes
.
Mejor manejo de WebSocket y conexiones
Se han implementado varias correcciones críticas para mejorar la estabilidad de las conexiones:
- Corregido NPE potencial en el manejo de WebSocket de OkHttp
- Asegurado que los streams son notificados apropiadamente de errores
- Cambiado el manejo de rolling update para usar JSON merge patch para evitar errores 422 durante actualizaciones de deployment
Estas mejoras hacen que el cliente sea más confiable cuando maneja conexiones de larga duración y operaciones de deployment.
Nota
Ten en cuenta que puedes seguir accediendo a clústers de Kubernetes más nuevos con versiones anteriores del cliente de Fabric8.
El cliente proporciona una clase GenericKubernetesResources para interactuar con recursos que aún no son compatibles con el cliente. Siempre recomendamos usar la última versión del cliente para beneficiarte de las últimas características y correcciones de errores, pero no es obligatorio.
Cómo utilizar esta versión
Si tu proyecto está basado en Maven, lo único que hay que hacer es añadir Fabric8 Kubernetes Client a las dependencias del proyecto:
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>
<version>7.4.0</version>
</dependency>
Si tu proyecto está basado en Gradle, lo único que tienes que hacer es añadir Fabric8 Kubernetes Client a las dependencias de Gradle:
dependencies {
api "io.fabric8:kubernetes-client:7.4.0"
}
Una vez hayas configurado tu proyecto, puedes crear una instancia del cliente para realizar distintas operaciones. En el siguiente fragmento de código muestro como instanciar el cliente y obtener una lista de Pods:
try (KubernetesClient client = new KubernetesClientBuilder().build()) {
client.pods().list().getItems().forEach(p -> System.out.println(p.getMetadata().getName()));
}
Cómo ayudar y colaborar
Si estás interesado o interesada en ayudar con el proyecto y es la primera vez que contribuyes, puedes echar un vistazo al tag "good first issue" en el repositorio. Hemos etiquetado issues muy sencillas para que puedas iniciarte en el mundo Open Source.
También nos encanta leer artículos y publicaciones mencionando nuestro proyecto y compartiendo la experiencia. Dar una estrella al proyecto, y en general, ayudar a promocionar el proyecto, nos ayuda a llegar a más usuarios e incrementar el feedback. El feedback es la única forma de mejorar y siempre es bienvenido.
Project Page | Issues | Discussions | Gitter | Stack Overflow
