Enviado por juanonlab el Dom, 24/11/2019 - 17:37
Despliegue Spring Boot en Azure

El mundo cloud está en pleno desarrollo. En ocasiones existe mucha información al respecto y para hacer ciertas tareas, relativamente sencillas, se complican porque la información no está actualizada.

En mi caso, buscando información sobre como desplegar una aplicación Spring Boot en Azure de Microsoft he encontrado este tipo de problemas. Esta entrada está basada en dos artículos que podéis encontrar en estos enlaces:

- Spring Boot Deployment On Azure App Service

- Deploying a Spring Boot app to Azure

Haciendo una mezcla de esta información y añadiendo otras he conseguido realizar el despliegue de la aplicación. La tarea no es complicada pero es necesario conocer un poco Maven y sus ficheros de configuración. Es recomendable leer la documentación que te proporciona Microsoft.

Hay que disponer de una cuenta de Azure y descargar Azure Cli. Este último es un cliente de consola que nos va a permitir obtener información de nuestra cuenta Azure. Actualmente las cuentas de Azure gratuitas nos proporcionan 170 euros de saldo. Puedes acceder a las condiciones de una cuenta gratuita haciendo clic aquí.

 

Configurar settings.xml para Maven

Para desplegar desde consola la aplicación Spring Boot es necesario disponer de un fichero settings.xml de Maven preparado para Azure. Hay ciertos datos que se necesitan indicar en este xml y para obtenerlos basta con usar azure cli lanzando dicho comando por consola. Se abre un terminal PowerShell y se realiza el login con Azure. El comando necesario es:

PS C:\proyectos\bck\azureTest> az login

Se obtiene la siguiente información:

You have logged in. Now let us find all the subscriptions to which you have access...
[
  {
    "cloudName": "AzureCloud",
    "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
    "isDefault": true,
    "name": "Evaluación gratuita",
    "state": "Enabled",
    "tenantId": "tttttttt-tttt-tttt-tttt-tttttttttttt",
    "user": {
      "name": "xxxxxxxxxxxxxxxxxx@outlook.es",
      "type": "user"
    }
  }
]

 

Los valores de los campos id y tenantId son los campos necesarios para configurar correctamente Azure con Maven.

Ahora es necesario ir al settings.xml de Maven e incorporar la información de Azure para hacer los despliegues. Se suele ubicar en windows en:

C:\Users\.m2

y en linux en:

/etc/maven/settings.xml

o

$HOME/.m2/settings.xml

 

La información debe quedar guardada en la sección servers del  fichero settings.xml de la siguiente forma:

Después de esto es necesario configurar el fichero pom.xml del proyecto Spring Boot descargado.

Preparar Spring Boot para el despliegue en Azure

Como ejemplo se puede descargar el ejemplo que tengo disponible en GitHub. Basta con clonar el proyecto:

git clone https://github.com/juanonlab/azureTest.git

Importar el proyecto con Eclipse u otro editor. He utilizado Java11 para el desarrollo.

 

Analizando el pom.xml, en la sección de plugins:

En este fragmento hay que destacar varias etiquetas:

- appName: indica el nombre del recurso. Se puede comprobar en el portal de Azure el nombre de la aplicación. En este ejemplo es: azureTest-FREE-JPP.

pricingTier: muy importante. T1 se usa para recurso gratuito. Por defecto utiliza P1V2 que consume saldo de tu cuenta gratuita.

- resource: Existen dos etiquetas resource. Una de ellas despliega el jar y otro el fichero de configuración web.config 

 

Preparar web.config

Es necesario disponer en el mismo nivel en el que se va a alojar el jar de Spring Boot un fichero de configuración. Este fichero indica el nombre  jar que se debe lanzar al desplegar la aplicación.

El fichero quedaría así:

En la línea 8 se índica el nombre exacto del jar que en este caso es: azureTest-0.0.1.jar . Este fichero queda guardado en la ruta ./src/main/resources del proyecto.

Se ha dejado el fichero pom.xml configurado para subir de manera conjunta el jar del proyecto y el fichero web.config pero se podría modificar el pom.xml para almacenarlo en otra ubicación.

 

Despliegue hacia Azure de la aplicación Spring Boot

Una vez que los datos de la cuenta de Azure estén bien configurados en el fichero settings.xml será necesario lanzar desde la raíz del proyecto un comando para realizar el despliegue a la cuenta de Azure. Si el recurso no existe Azure creará un nuevo recurso. Si ya existe actualizará el mismo. En este ejemplo se crea uno desde cero. 

Para el despliegue se lanza el comando:

mvn azure-webapp:deploy

La salida del programa es:

...
[INFO] Target Web App doesn't exist. Creating a new one...
[INFO] Creating App Service Plan 'ServicePlane16468c9-ac1a-4c8a'...
[INFO] Successfully created App Service Plan.
[INFO] Successfully created Web App.
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource to C:\proyectos\bck\azureTest\target\azure-webapp\azureTest-FREE-JPP-c3204f34-d192-4d79-9a62-bf49ce3c5dbf
[INFO] Copying 1 resource to C:\proyectos\bck\azureTest\target\azure-webapp\azureTest-FREE-JPP-c3204f34-d192-4d79-9a62-bf49ce3c5dbf
[INFO] Trying to deploy artifact to azureTest-FREE-JPP...
[INFO] Deploying the zip package azureTest-FREE-JPP-c3204f34-d192-4d79-9a62-bf49ce3c5dbf2195807849862933082.zip...
[INFO] Successfully deployed the artifact to https://azuretest-free-jpp.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
...

En la salida por pantalla se indica que el recurso creado se llama:

 

 https://azuretest-free-jpp.azurewebsites.net

 

 

Observado el código SpringBoot  para acceder al recurso se tiene:

 

Luego para obtener la respuesta es necesario escribir en un navegador:

 

https://azuretest-free-jpp.azurewebsites.net/apiazure/consejos

 

 

La respuesta del servicio será:

Consejos inicial

Al entrar en el portal Azure de la cuenta se tiene:

Portal Azure

Que es el servicio que se ha creado.

 

Modificando las variables desde Azure

Para modificar los consejos desde Azure se puede realizar desde la sección de configuración. Después es posible sobrecargar las opciones de SpringBoot desde: Nueva configuración de la aplicación .

Modificar propiedades

Después se añade la propiedad que se quiera y se guarda está información. Azure se encarga de actualizar estas propiedades.

Propiedad modificada

Una vez guardada la propiedad se puede comprobar (volviendo a acceder a la aplicación) que el consejo ha cambiado.

Consejos modificados

Consola Azure

Entre muchas funcionalidades que ofrece Azure en la sección de App Services está el acceso a la consola. La aplicación puede generar logs y revisarse de manera sencilla en esta sección. Existen otras muchas secciones que quedan fuera de esta entrada.

Consola Azure

Esto es sólo una breve introducción de como realizar despliegues en Azure de una aplicación Spring Boot. Para más detalles se puede consultar los enlaces siguientes:

- Despliegue con Maven en Azure

- Maven plugin en Azure

El mundo Cloud es un mundo en evolución y mejora continua. Espero que la entrada permita aclarar ciertos conceptos relacionados con la subida de aplicaciones Spring Boot a Azure. Como se ha podido comprobar no es muy complicado si se siguen todos los pasos.

Nota: es posible que la url de mi proyecto Azure no funcione porque ya haya caducado mi suscripción. Pero el código es totalmente funcional y se podrá testear al crear una cuenta de Azure.

 

Añadir nuevo comentario