Diseño de aplicaciones

Descubrimiento de servicios con Java y aplicación de base de datos en Kubernetes

Este blog mostrará cómo una simple aplicación Java puede hablar con una base de datos utilizando el descubrimiento de servicios en Kubernetes.

 Kubernetes Logo WildFly Logo

Descubrimiento de servicios con Java y aplicación de base de datos en DC/OS explica por qué el descubrimiento de servicios es un aspecto importante para una aplicación multicontenedor. Ese blog también explicaba cómo se puede hacer esto para DC/OS.

Vamos a ver cómo se puede lograr esto en Kubernetes con una sola instancia de servidor de aplicaciones y servidor de base de datos. Este blog utilizará WildFly para el servidor de aplicaciones y Couchbase para la base de datos.

Este blog utilizará los siguientes pasos principales:

  • Iniciar clúster Kubernetes de un nodo
  • Definición de la aplicación Kubernetes
  • Despliegue de la aplicación
  • Acceder a la aplicación

Iniciar clúster Kubernetes

Minikube es la forma más sencilla de iniciar un clúster Kubernetes de un nodo en una máquina virtual en su ordenador portátil. Primero hay que descargar el binario y luego instalarlo.

Las instrucciones completas de instalación están disponibles en github.com/kubernetes/minikube.

En último lanzamiento se puede instalar en OSX como:

También requiere kubectl a instalar. Instalación y configuración de kubectl proporcionan instrucciones detalladas sobre cómo configurar kubectl. En OSX, se puede instalar como:

Ahora, inicie el clúster como:

En Versión de kubectl muestra más detalles sobre la versión del cliente kubectl y del servidor minikube:

Se pueden obtener más detalles sobre el clúster utilizando la función kubectl cluster-info mando:

Definición de la aplicación Kubernetes

La definición de la aplicación se define en github.com/arun-gupta/kubernetes-java-sample/blob/master/service-discovery.yml. Consta de:

  • Un servicio Couchbase
  • Conjunto de réplicas Couchbase con un único pod
  • Un juego de réplicas WildFly con una sola vaina

La parte clave es donde el valor del COUCHBASE_URI es el nombre del servicio Couchbase. Esto permite que la aplicación desplegada en WildFly descubra dinámicamente el servicio y se comunique con la base de datos.

arungupta/couchbase:travel La imagen Docker se crea utilizando github.com/arun-gupta/couchbase-javaee/blob/master/couchbase/Dockerfile.

arungupta/wildfly-couchbase-javaee:travel La imagen Docker se crea utilizando github.com/arun-gupta/couchbase-javaee/blob/master/Dockerfile.

La aplicación Java EE espera a que se complete la inicialización de la base de datos antes de empezar a consultarla. Esto puede verse en github.com/arun-gupta/couchbase-javaee/blob/master/src/main/java/org/couchbase/sample/javaee/Database.java#L25.

Despliegue de la aplicación

Esta aplicación puede desplegarse como:

La lista de servicios y conjuntos de réplicas puede mostrarse utilizando el comando kubectl get svc,rs:

Los registros de la réplica única de Couchbase pueden obtenerse utilizando el comando kubectl logs rs/couchbase-rs:

Los registros del conjunto de réplicas de WildFly pueden verse utilizando el comando kubectl logs rs/wildfly-rs:

Solicitud de acceso

En kubectl proxy inicia un proxy al servidor API de Kubernetes. Iniciemos un proxy de Kubernetes para acceder a nuestra aplicación:

Exponga el conjunto de réplicas de WildFly como un servicio mediante:

La lista de servicios puede verse de nuevo utilizando kubectl get svc mando:

Ahora, la aplicación es accesible en:

El formato de salida es el siguiente:

Ahora, se pueden añadir nuevos pods como parte del servicio Couchbase escalando el conjunto de réplicas. Los pods existentes pueden ser terminados o reprogramados. Pero la aplicación Java EE seguirá accediendo al servicio de base de datos utilizando el nombre lógico.

Este blog mostró cómo una simple aplicación Java puede hablar con una base de datos utilizando el descubrimiento de servicios en Kubernetes.

Para más información, consulte:

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

1 Comentarios

  1. [...] Descubrimiento de servicios con Java y aplicación de base de datos en Kubernetes [...]

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.