Fabric8 Kubernetes Client 6.7 está disponible!
Nota
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 ActiveMQ Artemis Operator CRD.
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
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,l o 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 "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
