Noticias

Implementar la aplicación Spring Boot en el entorno de producción

En un artículo anterior cubrimos lo fácil que es crear Contenedor de arranque de primavera con Rockcraft. Por lo tanto, el siguiente paso lógico es implementar y operar su aplicación en un entorno de producción. El ecosistema Juju es clave para facilitar este proceso.

En este artículo, analizaremos los pasos necesarios para implementar una aplicación Spring Boot en producción utilizando Juju y Kubernetes. El objetivo es demostrar la integración de aplicaciones con servicios básicos como PostgreSQL para la gestión de bases de datos y Traefik para el control de ingreso.

A menudo, implementar y operar un contenedor Spring Boot es más fácil de decir que de hacer. Cualquier aplicación no trivial requiere integración con otros componentes de software, como bases de datos, intermediarios de mensajes y servicios de autenticación. Algunos de estos componentes son complejos de operar. Además, su aplicación debe estar expuesta al mundo exterior. Para las operaciones del segundo día, también debe realizar un mantenimiento de rutina y monitorear adecuadamente sus aplicaciones.

Afortunadamente, Juju ofrece un ecosistema sólido de operadores de software de alta calidad que permiten la implementación, la integración y la gestión del ciclo de vida a cualquier escala en cualquier infraestructura.

Con el lanzamiento de las extensiones del marco Spring Boot para Rockcraft y Charmcraft, puede beneficiarse del ecosistema Juju si su aplicación sigue las mejores prácticas de la metodología de 12 factores.

Si está desarrollando una aplicación Spring Boot, le recomendamos que pruebe Soporte del paquete de desarrollo para Spring Luego sigue este tutorial para escribir tu encanto Spring Boot.

Pero sin más, veamos cómo funciona todo en Charming. Clínica de mascotas de primavera.

Crearemos una máquina virtual desde cero usando pasó varias veces y preparar nuestras máquinas de desarrollo con la ayuda de conserje herramienta.

Inicie una nueva máquina virtual y agregue un shell en ella:

multipass launch --cpus 4 --disk 30G --memory 4G --name blogpost 24.04
multipass shell blogpost

Proporcionaremos una máquina de prueba con Concierge, que instalará y configurará Rockcraft, Charmcraft, Canonical Kubernetes y Juju. Más allá de eso, actualizaremos el balanceador de carga para que funcione bajo la IP principal de la máquina e instalaremos el registro de imágenes OCI:

sudo snap install --classic concierge
sudo concierge prepare -p k8s --charmcraft-channel latest/edge
PREFSRC=$(ip -4 -j route get 2.2.2.2 | jq -r '.[] | .prefsrc')
sudo k8s set load-balancer.cidrs=$PREFSRC/32
curl  | kubectl apply -f - 

Clínica de mascotas de primavera Es una aplicación que nos fascinará. Es una aplicación de muestra creada por el equipo de Spring para demostrar una aplicación web real utilizando el marco Spring.

Clona el repositorio spring-petclinic.

git clone 
cd spring-petclinic

seguir descripción del repositorio spring-petclinicpuedes crear un jar y ejecutarlo usando la línea de comando. Es simple, pero claramente no está listo para producción, ni siquiera para una base de datos en memoria.

Preparemos una piedra para nuestra aplicación: una imagen compatible con OCI. Podemos usar Maven o Gradle para construir la aplicación, pero en este ejemplo usaremos Maven. Desde el directorio spring-petclinic, elimine los artefactos de Gradle e inicialice el proyecto rockcraft:

rm -rf build.gradle gradlew gradle
rockcraft init --profile spring-boot-framework

Empaquete la roca y cárguela en el registro OCI:

ROCKCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=True rockcraft pack
rockcraft.skopeo copy --insecure-policy --dest-tls-verify=false oci-archive:spring-petclinic_0.1_amd64.rock docker://localhost:32000/spring-petclinic:0.1

En este punto, tenemos una imagen OCI totalmente compatible. Pero para integrarnos completamente en el ecosistema de Juju, necesitamos un encanto, un operador de software.

Vamos a construirlo:

mkdir charm
cd charm
charmcraft init --profile spring-boot-framework --name spring-petclinic

Como queremos usar PostgreSQL en lugar de una base de datos en memoria, agregue las siguientes líneas al archivo charmcraft.yaml:

requires:
  postgresql:
    interface: postgresql_client
    optional: false
    limit: 1

Estamos listos para crear glamour. Embalar:

CHARMCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=True charmcraft pack

En este punto, tenemos un encanto para spring-petclinic que se puede integrar perfectamente con PostgreSQL.

Probémoslo usando el nuevo modelo Juju en la nube de Kubernetes:

juju add-model spring-petclinic
juju deploy ./spring-petclinic_amd64.charm spring-petclinic --resource app-image=localhost:32000/spring-petclinic:0.1 --config app-profiles=postgres

Implemente PostgreSQL y Traefik e intégrelos con spring-petclinic:

juju deploy postgresql-k8s --trust
juju integrate spring-petclinic postgresql-k8s
juju deploy traefik-k8s --trust
juju integrate spring-petclinic traefik-k8s

¡Después de un tiempo, su aplicación lista para producción estará lista para usar! Puedes comprobarlo con el comando. juju status:

Puede obtener la URL de su aplicación a través de:

juju run traefik-k8s/0 show-proxied-endpoints

Eso es todo, ¡estás listo para usarlo!

La aplicación se ejecuta en un clúster de Kubernetes con Trafik como entrada. Su aplicación spring-petclinic ahora usa PostgreSQL para almacenar sus datos. Charmed PostgreSQL K8s ha proporcionado credenciales de base de datos para la aplicación spring-petclinic y está listo para ejecutarse en un entorno de nivel de producción.

Al principio no está mal.

¿Tiene un proyecto o configuración que le gustaría adoptar esta solución? Si tiene alguna pregunta sobre las herramientas de 12 factores de Rockcraft y Charmcraft, póngase en contacto a través de nuestro canal Matrix.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba