
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 conciergesudo concierge prepare -p k8s --charmcraft-channel latest/edgePREFSRC=$(ip -4 -j route get 2.2.2.2 | jq -r '.[] | .prefsrc')sudo k8s set load-balancer.cidrs=$PREFSRC/32curl | 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 gradlerockcraft init --profile spring-boot-framework
Empaquete la roca y cárguela en el registro OCI:
ROCKCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS=True rockcraft packrockcraft.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 charmcd charmcharmcraft 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 packEn 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-petclinicjuju 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 --trustjuju integrate spring-petclinic postgresql-k8sjuju deploy traefik-k8s --trustjuju 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-endpointsEso 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.









