Introducción a Eclipse JKube: Herramientas y plugins de Java para Kubernetes y OpenShift


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

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:

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

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:

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:

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

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:

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.

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:

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…

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

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *