Fabric8 Kubernetes Client 6.7 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 6.7.2
de Fabric8 Kubernetes Client y que está disponible para su descarga desde Maven Central 🎉.
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:
- Java Generator Gradle Plugin
- Actualización de los modelos de Tekton a las versiones más recientes
- Soporte para proxis SOCKS mediante proxy URLs
- 🐛 Muchas otras mejoras y bug-fixes
Puedes encontrar la lista completa de cambios para esta versión en la release page en GitHub.
Java Generator Gradle Plugin
Desde esta versión, puedes generar clases Java a partir de CRDs de Kubernetes usando el Java Generator de Fabric8 Kubernetes Client en tus proyectos Gradle haciendo uso del nuevo plugin java-generator
. En versiones anteriores, ya proporcionábamos una herramienta CLI y un plugin Maven. El nuevo plugin Gradle completa el conjunto de herramientas y mejorará la experiencia de desarrollo para aquellos que trabajen con Gradle.
El siguiente fragmento de código contiene un ejemplo de un fichero build.gradle
con el nuevo plugin java-generator
de Gradle. El proyecto está configurado para generar clases Java con builders para el CRD del ActiveMQ Artemis Operator.
plugins {
id 'java-library'
id 'io.fabric8.java-generator' version '6.7.2'
}
repositories {
mavenCentral()
mavenLocal()
}
sourceCompatibility = '17'
sourceSets {
main {
java {
srcDirs "$buildDir/generated/sources"
}
}
}
dependencies {
compileOnly 'io.sundr:builder-annotations:0.95.0'
annotationProcessor 'io.sundr:builder-annotations:0.95.0'
compileOnly 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
api 'io.fabric8:kubernetes-client:6.7.2'
api 'io.fabric8:generator-annotations:6.7.2'
}
javaGen {
urls = [
'https://raw.githubusercontent.com/rh-messaging/activemq-artemis-operator/amq-broker-7.11.0.OPR.3.CR1/bundle/manifests/broker.amq.io_activemqartemises.yaml'
]
extraAnnotations = true
}
En las primeras líneas del fragmento, comenzamos declarando el nuevo plugin como una dependencia:
id 'io.fabric8.java-generator' version '6.7.2'
A continuación, definimos un source set adicional para incluir las clases Java generadas en el proyecto:
sourceSets {
main {
java {
srcDirs "$buildDir/generated/sources"
}
}
}
Nota que en la sección de dependencias incluimos las dependencias para el Fabric8 Kubernetes Client y también los procesadores de anotaciones de Lombok y Sundr.io para generar las clases Java con sus builders.
La última parte contiene la configuración para el Java Generator javaGen
. En este caso, lo estamos configurando para descargar el CRD desde la URL remota y para generar los builders mediante el uso de la opción extraAnnotations=true
.
javaGen {
urls = [
'https://raw.githubusercontent.com/rh-messaging/activemq-artemis-operator/amq-broker-7.11.0.OPR.3.CR1/bundle/manifests/broker.amq.io_activemqartemises.yaml'
]
extraAnnotations = true
}
Ahora que tenemos un fichero de proyecto build.gradle
completo, podemos proceder a generar las clases Java ejecutando el siguiente comando:
gradle crd2Java
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>6.7.2</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:6.7.2"
}
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 "first-timers-only" 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