A logo showing the text blog.marcnuri.com
English
Inicio»Java»Cliente de Kubernetes para Java: Introducción a Fabric8

Entradas Recientes

  • Fabric8 Kubernetes Client 6.4.0 está disponible!
  • Fabric8 Kubernetes Client 6.3.1 está disponible!
  • Eclipse JKube 1.10 está disponible!
  • Fabric8 Kubernetes Client 6.2.0 está disponible!
  • Fabric8 Kubernetes Client 6.1 está disponible!

Categorías

  • Antiguo
  • Front-end
  • Herramientas
  • Java
  • JavaScript
  • Operaciones
  • Proyectos personales

Archivos

  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • mayo 2020
  • marzo 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • marzo 2007

Cliente de Kubernetes para Java: Introducción a Fabric8

2021-12-02 en Java etiquetado Cliente / Cloud / Fabric8 / Java / Kubernetes / OpenShift por Marc Nuri | Última actualización: 2022-09-01
English version

Logotipo de Fabric8 Kubernetes Client
Logotipo de Fabric8 Kubernetes Client

Introducción

El mundo de Kubernetes Java es un ecosistema muy rico lleno de infinidad de recursos. A la hora de interactuar con Kubernetes API server, tienes varias opciones entre las que elegir.

En una publicación anterior os introduje YAKC, un cliente que implementé como un proyecto paralelo. Hoy os voy a hablar de otro cliente que además mantengo de forma oficial, Fabric8 Kubernetes Client.

Fabric8 Kubernetes Client es el cliente de Kubernetes para Java más antiguo de los que hay disponibles. A pesar de que ahora hay un cliente oficial de Kubernetes para Java promovido por la CNCF, Fabric8 sigue siendo una de las opciones más populares.

El cliente de Fabric8 se diferencia del resto porque proporciona una API basada en un DSL fluido. Mediante este DSL se pueden tanto realizar operaciones como instanciar o modificar recursos.

¿Cuáles son los componentes principales de Fabric8 Kubernetes Client?

Implementaciones específicas por Cluster

Dependiendo del tipo de cluster al que apuntes hay distintas opciones entre las que elegir. La opción más común es el artefacto kubernetes-client, que debería de ser compatible con cualquier implementación de Kubernetes (incluyendo OpenShift). No obstante, si quieres aprovechar al máximo las ventajas de OpenShift y sus recursos específicos, entonces deberías de utilizar el artefacto openshift-client.

ClusterComponente/Artefacto
Kuberneteskubernetes-client
OpenShiftopenshift-client

Extensiones disponibles

Además de los clientes básicos, hay un número creciente de extensiones que forman parte de la distribución de Fabric8 Kubernetes Client.

ExtensiónComponente/Artefacto
Apache Camel Kcamel-k-client
cert-managercertmanager-client
Chaos Meshchaosmesh-client
Istioistio-client
Knativeknative-client
Open Cluster Managementopen-cluster-management-client
Service Catalogservicecatalog-client
Tektontekton-client
Vertical Pod Autoscalerverticalpodautoscaler-client
Volcanovolcano-client
Volume Snapshotvolumesnapshot-client

¿Cómo puedo utilizar Fabric8 Kubernetes Client en mi proyecto?

La forma más sencilla de empezar es incluir la dependencia del componente requerido en tu proyecto.

Si estás utilizando Maven, esto es tan sencillo como:

<dependency>
  <groupId>io.fabric8</groupId>
  <artifactId>kubernetes-client</artifactId>
  <version>6.4.0</version>
</dependency>

O si tu proyecto está basado en Gradle:

dependencies {
  implementation 'io.fabric8:kubernetes-client:6.4.0'
}

Operaciones disponibles

El cliente de Fabric8 debería permitir al menos todas las operaciones que puedes ejecutar con Kubectl or el cliente de Go para Kubernetes.

A continuación expongo un resumen de las tareas más comunes (normalmente tipo CRUD) que puedes conseguir empleando el cliente de Fabric8.

Obtener una lista de recursos

El siguiente ejemplo devuelve una lista de Pods para el namespace especificado:

try (KubernetesClient kc = new KubernetesClientBuilder().build()) {
  kc.pods().inNamespace("my-namespace").list().getItems()
    .forEach(pod -> 
      System.out.printf("Pod %s %n", pod.getMetadata().getName()));
}

Recuperar un recurso con determinado nombre

El ejemplo a continuación recupera un Pod con el nombre proporcionado desde el namespace especificado:

Pod pod = kc.pods().inNamespace("my-namespace").withName("my-pod").get();

Crear un recurso

En el siguiente ejemplo creamos un ConfigMap en el namespace especificado:

kc.configMaps().inNamespace("my-namespace").create(new ConfigMapBuilder()
  .withNewMetadata().withName("my-configmap").endMetadata()
  .addToData("data-field", "data-value")
  .build()
);

Editar un recurso con un nombre determinado

El siguiente ejemplo añade una anotación a un Pod con el nombre proporcionado en el namespace especificado:

kc.pods().inNamespace("my-namespace").withName("my-pod")
  .edit(p -> new PodBuilder(p)
    .editMetadata().addToAnnotations("edited", "true").endMetadata().build());

Borrar un recurso con un nombre determinado

En este ejemplo borramos un Pod con el nombre proporcionado en el namespace especificado y esperamos 10 segundos a que la operación se complete:

kc.pods().inNamespace("my-namespace").withName("my-pod").delete();
kc.pods().inNamespace("my-namespace").withName("my-pod")
  .waitUntilCondition(Objects::isNull, 10, TimeUnit.SECONDS);

Estos son sólo unos pocos ejemplos que muestran alguna de las múltiples ventajas que obtendrás si eliges utilizar el cliente de Kubernetes Fabric8. Tienes muchos más ejemplos disponibles en la Chuleta oficial.

Conclusión

En esta publicación te he introducido brevemente a Fabric8 Kubernetes Client y sus componentes. También he incluido pequeños fragmentos de código para realizar las operaciones más básicas en tu clúster.

Publicaré más artículos con instrucciones detalladas para operaciones de mayor complejidad. También hay componentes adicionales en la suite de Fabric8 (como el Mock Server) que me gustaría mostrar en artículos exclusivos y dedicados.

De momento, puedes aprender más acerca del cliente visitando los siguientes recursos:

  • Repositorio oficial en GitHub
  • Proyecto con los ejempos oficiales
  • Chuleta de Fabric8 Kubernetes Client
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos

← Cómo saber si un array en JavaScript contiene valores duplicadosQuarkus: ¿Cómo cambiar el puerto de la aplicación? →
© 2007 - 2023 Marc Nuri