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 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

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

2020-10-15 en Java etiquetado Eclipse / JKube / Kubernetes / Open Source / OpenShift por Marc Nuri | Última actualización: 2022-02-03
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.

Fabric8 Logo
Fabric8 Logo

A pesar de que la suite de fabric8 está descatalogada, aun quedan varios proyectos activos pertenencientes 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 utilizar 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.

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:

1<build>
2    <plugins>
3        <!-- ... -->
4        <plugin>
5          <groupId>org.eclipse.jkube</groupId>
6          <artifactId>kubernetes-maven-plugin</artifactId>
7          <version>1.10.1</version>
8        </plugin>
9    </plugins>
10    <!-- ... -->
11</build>

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

1<build>
2    <plugins>
3        <!-- ... -->
4        <plugin>
5          <groupId>org.eclipse.jkube</groupId>
6          <artifactId>openshift-maven-plugin</artifactId>
7          <version>1.10.1</version>
8        </plugin>
9    </plugins>
10    <!-- ... -->
11</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 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 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:

1mvn k8s:build

Publicando la imagen en un registro

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 utilizando 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:

1<properties>
2  <!-- ... -->
3  <jkube.generator.name>your-docker-hub-user/image-name:latest</jkube.generator.name>
4</properties>

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

1mvn 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.

Al igual 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:

1mvn 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 lo que, a menos que quieras apuntar a un cluster diferente, tampoco tendrás que proporcionar ninguna configuración adicional.

1mvn 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:

1mvn 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 libererí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.

Eclipse JKube Logo
Eclipse JKube Logo
Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos

← Kubernetes: Operador vs. ControllerAccede al API de Kubernetes desde un Pod con Java →
© 2007 - 2023 Marc Nuri