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 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Cliente de Kubernetes para Java: Introducción a Fabric8

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

Introducción

El ecosistema de Kubernetes para desarrolladores Java está en pleno auge, ofreciendo una variedad de herramientas y recursos para interactuar con tu clúster. Si necesitas interactuar con el servidor de la API de Kubernetes, existen varias bibliotecas de cliente disponibles.

Como RedHatter, soy el responsable del mantenimiento del Fabric8 Kubernetes Client, una potente y ampliamente adoptada biblioteca de Java para trabajar con Kubernetes.

The logo of Fabric8 Kubernetes Client
The logo of Fabric8 Kubernetes Client

El Fabric8 Kubernetes Client es uno de los clientes Java más antiguos y establecidos para Kubernetes. A pesar de la aparición del cliente Java oficial de la CNCF, Fabric8 sigue siendo muy popular debido a su robusto conjunto de funciones, extensibilidad y API amigable para los desarrolladores.

Características principales del Fabric8 Kubernetes Client

El Fabric8 Kubernetes Client ofrece una amplia gama de funciones que lo convierten en una excelente opción para los desarrolladores de Java que trabajan con Kubernetes y lo distinguen de sus competidores.

  1. DSL rico: El cliente ofrece un Lenguaje Específico de Dominio (DSL) que simplifica las interacciones con la API de Kubernetes.
  2. Extensibilidad: Admite varias extensiones, incluidas las de Knative, Tekton e Istio.
  3. Cliente HTTP flexible: Desde la versión 6.0, los usuarios pueden configurar el cliente HTTP subyacente, lo que permite una mejor integración con las aplicaciones existentes.
  4. Soporte de Custom Resource: El cliente ofrece un excelente soporte para trabajar con Definiciones de Recursos Personalizados (CRDs).
  5. Compatibilidad nativa: Está diseñado para funcionar perfectamente en modo nativo, lo que lo convierte en una excelente opción para proyectos que utilizan frameworks como Quarkus.

Soporte integrado para Kubernetes y OpenShift

El Fabric8 Kubernetes Client ofrece soporte específico para Kubernetes y OpenShift.

ClústerComponente/Artefacto
Kuberneteskubernetes-client
OpenShiftopenshift-client

Si bien el artefacto kubernetes-client es compatible con cualquier distribución de Kubernetes, openshift-client proporciona capacidades adicionales específicas de OpenShift.

Extensiones para funcionalidades mejoradas

El Fabric8 Kubernetes Client también admite un creciente ecosistema de extensiones, permitiendo la integración perfecta con herramientas como Cert Manager, Istio, Tekton y muchas más:

ExtensiónComponente/Artefacto
Cert Managercertmanager-client
Chaos Meshchaosmesh-client
Istioistio-client
Knativeknative-client
Open Cluster Managementopen-cluster-management-client
Open Virtual Networkingopen-cluster-management-client
Tektontekton-client
Vertical Pod Autoscalerverticalpodautoscaler-client
Volcanovolcano-client
Volume Snapshotvolumesnapshot-client

Empezando con Fabric8 Kubernetes Client

Vamos a empezar configurando el Fabric8 Kubernetes Client en tu proyecto.

Cómo configurar Fabric8 Kubernetes Client en mi proyecto

Añadir Fabric8 a tu proyecto es sencillo.

Usa la siguiente dependencia para Maven:

pom.xml
<dependency>
  <groupId>io.fabric8</groupId>
  <artifactId>kubernetes-client</artifactId>
  <version>7.1.0</version>
</dependency>

O si tu proyecto está basado en Gradle:

build.gradle
dependencies {
  implementation 'io.fabric8:kubernetes-client:7.1.0'
}

Operaciones comunes con Fabric8 Kubernetes Client

El cliente Java de Fabric8 debería permitirte realizar al menos las mismas operaciones que puedes ejecutar con Kubectl o el cliente Go de Kubernetes.

En las siguientes secciones, encontrarás un resumen de las tareas más comunes (generalmente relacionadas con CRUD) que puedes realizar mientras usas el cliente Fabric8.

Recuperar 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 un nombre dado

El siguiente ejemplo recupera un Pod con el nombre proporcionado del namespace especificado:

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

Crear un recurso

El siguiente ejemplo crea un ConfigMap en el namespace especificado:

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

Editar un recurso con un nombre dado

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

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

Eliminar un recurso con un nombre dado

El siguiente ejemplo elimina un Pod con el nombre proporcionado del namespace especificado y espera 10 segundos a que se complete la operación:

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

Estos ejemplos demuestran la simplicidad y potencia del DSL fluido de Fabric8. Para más ejemplos, explora el cheatsheet oficial.

Conclusión

El Fabric8 Kubernetes Client es una herramienta completa para desarrolladores de Java que trabajan con Kubernetes. Sus características, extensiones y API amigable para los desarrolladores lo convierten en una excelente opción para gestionar recursos de Kubernetes de forma programática.

Sigue atento a más artículos donde profundizaré en operaciones avanzadas, integración con herramientas como el Mock Server y casos de uso del mundo real.

Mientras tanto, puedes explorar los siguientes recursos:

  • Official GitHub Repository
  • Official Examples Project
  • Fabric8 Kubernetes Client Cheatsheet
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 - 2025 Marc Nuri