A logo showing the text blog.marcnuri.com
English
Inicio»Java»Eclipse JKube: Herramientas y plugins de Java para Kubernetes y OpenShift

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

Eclipse JKube: Herramientas y plugins de Java para Kubernetes y OpenShift

2020-10-15 en Java etiquetado Eclipse / Eclipse JKube / Kubernetes / Open Source / OpenShift por Marc Nuri | Última actualización: 2023-08-24
English version

Introducción

En este post os presentaré Eclipse JKube y cómo arrancar con el proyecto para desplegar vuestras aplicaciones Java en la Nube. Eclipse JKube es una colección de plugins y librerías que te ayudarán a desarrollar aplicaciones Java cloud-native. Incluye herramientas para construir imágenes de contenedores empleando estrategias de construcción como Docker, JIB o S2I. Además, JKube proporciona los medios necesarios para generar ficheros de configuración para el cluster (YAML) y desplegarlos en OpenShift o Kubernetes.

El origen de JKube

Eclipse JKube no es un proyecto original sino el cambio de imagen y puesta al día del gran Fabric8 Maven Plugin. Fabric8 Maven Plugin formaba parte del ecosistema de Fabric8 que ahora está descatalogado.

The logo of Fabric8
The logo of Fabric8

A pesar de que la suite de fabric8 está descatalogada, aún quedan varios proyectos activos pertenecientes al ecosistema fabric8. Con respecto a JKube, en noviembre de 2019, el proyecto se donó y fue aceptado por la fundación Eclipse. Los esfuerzos de desarrollo han continuado bajo este nombre y la versión 1.0.0 fue finalmente liberada en septiembre de 2020.

Componentes de JKube

A día de hoy, JKube proporciona 3 componentes distintos:

  • JKube Kit: Contiene la lógica de la librería y se utiliza por el resto de componentes (plugins).
  • Kubernetes Maven Plugin: Especialmente diseñado para apuntar a clusters Kubernetes estándar. Construye imágenes utilizando Docker o JIB. Genera ficheros de configuración estándar para Kubernetes.
  • OpenShift Maven Plugin: Construido encima de Kubernetes Maven Plugin, proporciona funcionalidades específicas para OpenShift. Construye imágenes empleando S2I. Genera ficheros de configuración específicos para OpenShift.
  • Kubernetes Gradle Plugin: Plugin para Gradle que proporciona funcionalidades análogas a las de Kubernetes Maven Plugin para proyectos basados en Gradle.
  • OpenShift Gradle Plugin: Plugin para Gradle que proporciona funcionalidades análogas a las de OpenShift Maven Plugin para proyectos basados en Gradle.

Primeros pasos

La forma más rápida de comenzar con JKube es empleando uno de los Plugins de Maven proporcionados. Hacer que tu aplicación sea amigable con Kubernetes es tan sencillo como añadir el plugin a la sección build de tu proyecto:

pom.xml
<build>
    <plugins>
        <!-- ... -->
        <plugin>
          <groupId>org.eclipse.jkube</groupId>
          <artifactId>kubernetes-maven-plugin</artifactId>
          <version>1.18.1</version>
        </plugin>
    </plugins>
    <!-- ... -->
</build>

O en el caso en que estés apuntando a un cluster OpenShift:

pom.xml
<build>
    <plugins>
        <!-- ... -->
        <plugin>
          <groupId>org.eclipse.jkube</groupId>
          <artifactId>openshift-maven-plugin</artifactId>
          <version>1.18.1</version>
        </plugin>
    </plugins>
    <!-- ... -->
</build>

Si tu aplicación está basada en uno de los frameworks soportados (Spring, Quarkus, Vert.x, OpenLiberty, etc.) esta será toda la configuración que necesites. También puedes dirigirte a la sección de quickstarts en la web de JKube para encontrar algún ejemplo que se ajuste mejor a tus necesidades.

Construyendo la imagen de tu contenedor

Una vez compilada y empaquetada tu aplicación (mvn clean package), es la hora de construir su imagen.

Nota

Si estás usando Minikube, puedes compartir el Docker daemon y registry de tu cluster ejecutando eval $(minikube docker-env). De este modo no será necesario publicar tu imagen en un registro compartido remoto.

Lanzando el siguiente comando, daremos instrucciones a JKube para que construya una imagen Docker para tu proyecto Maven:

mvn k8s:build

Publicando la imagen en un registro de contenedores

Tal como he comentado, este paso no será necesario si estás utilizando Minikube y has compartido el Docker daemon de tu cluster. También puedes saltarte este paso si estás apuntando a un cluster OpenShift y has utilizado OpenShift Maven Plugin.

Por otro lado, si necesitas publicar la imagen, lo más probable es que tengas que configurar su nombre. Puedes hacer esto de forma muy sencilla con JKube empleando una propiedad Maven:

pom.xml
<properties>
  <!-- ... -->
  <jkube.generator.name>your-docker-hub-user/image-name:latest</jkube.generator.name>
</properties>

Ya podemos lanzar el goal de Maven para publicar la imagen:

mvn k8s:push

Generando los recursos de configuración del cluster

JKube también proporciona un mecanismo para detectar los requisitos de tu proyecto y generar manifiestos de configuración del cluster (YAML files) específicos para tu aplicación.

Del mismo modo que en los pasos anteriores, si tu aplicación emplea uno de los frameworks soportados, lo único que tendrás que hacer es lanzar este comando:

mvn k8s:resource

Despliega tu aplicación

Por último, puedes desplegar los ficheros de configuración que acabas de generar en tu cluster. Internamente, Eclipse JKube utiliza Fabric8 Kubernetes Client para acceder al cluster leyendo tu .kube/config. Por tanto, a menos que quieras apuntar a un cluster diferente, tampoco es necesario que proporciones ninguna configuración adicional.

mvn k8s:apply

Si todo ha ido bien, tu aplicación ya debería de encontrarse disponible en el cluster.

Si estás usando OpenShift, JKube además creará un Route. Tu aplicación debería de ser públicamente accesible desde la ruta preconfigurada.

Limpiando recursos

En el caso en el que algo haya ido mal, o simplemente para borrar tu aplicación del cluster, puedes lanzar el siguiente comando:

mvn k8s:undeploy

Maven goals adicionales

Además de los que ya hemos visto, JKube proporciona una serie de Maven goals para facilitarte la vida como desarrollador:

  • k8s:log: Muestra las trazas de la aplicación desplegada.
  • k8s:debug: Habilita el modo depuración de tu aplicación Java en el cluster.
  • k8s:watch: Monitoriza el espacio de trabajo de tu proyecto para detectar cambios y redesplegar automáticamente tu aplicación.
  • Muchos más...

Barcelona JUG 2020

En diciembre de 2020 presenté una charla en un meetup organizado por el Barcelona JUG. El siguiente video es una grabación de la sesión dónde resumo lo que has podido leer en este artículo.

Conclusión

En este artículo os he presentado Eclipse JKube y cómo dar vuestros primeros pasos con la librería. También os he mostrado como configurar vuestro proyecto y los principales Maven goals proporcionados por los plugins de JKube.

Si quieres conocer con más detalle lo que Eclipse JKube puede ofrecerte, visita la página web del proyecto y su documentación. No olvides seguir jkubeio en Twitter para suscribirte a las últimas noticias y actualizaciones acerca del proyecto.

The logo of Eclipse JKube
The logo of Eclipse JKube
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Kubernetes: Operador vs. ControllerAccede al API de Kubernetes desde un Pod con Java
© 2007 - 2025 Marc Nuri