Compartir a través de


Implementación de aplicaciones Java de Spring Boot en Azure Container Apps

En este artículo se le indica cómo implementar una aplicación Java de Spring Boot con el inicio de sesión con la cuenta de Microsoft Entra en Azure Container Apps.

En este artículo se da por supuesto que ya ha consultado uno de los siguientes artículos usando solo la pestaña Ejecutar localmente y que ahora quiere hacer la implementación en Azure. Estas instrucciones son las mismas que las de la pestaña Implementar en Azure de estos artículos:

Requisitos previos

Preparar el proyecto de Spring

Siga estos pasos para preparar el proyecto:

  1. Use el siguiente comando de Maven para compilar el proyecto:

    mvn clean verify
    
  2. Ejecute el proyecto de ejemplo localmente mediante el comando siguiente:

    mvn spring-boot:run
    

Configurar

Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.

az login

Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.

az upgrade

Luego, instale o actualice la extensión de Azure Container Apps para la CLI.

Si recibe errores sobre los parámetros que faltan al ejecutar comandos az containerapp en la CLI de Azure, asegúrese de tener instalada la versión más reciente de la extensión de Azure Container Apps.

az extension add --name containerapp --upgrade

Nota:

A partir de mayo de 2024, las extensiones de la CLI de Azure ya no habilitan las características en versión preliminar de forma predeterminada. Para acceder a las características de la versión preliminar de Container Apps, instale la extensión Container Apps con --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Ahora que la extensión o módulo actualizado está instalado, registre los espacios de nombre Microsoft.App y Microsoft.OperationalInsights.

Nota:

Los recursos de Azure Container Apps han migrado desde el espacio de nombres Microsoft.Web al espacio de nombres Microsoft.App. Consulte Migración del espacio de nombres de Microsoft.Web a Microsoft.App marzo de 2022 para obtener más detalles.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Creación del entorno de Azure Container Apps

Ahora que la configuración de la CLI de Azure está completa, puede definir las variables de entorno que se usan en este artículo.

Defina las siguientes variables en el shell de Bash.

export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"

Cree un grupo de recursos.

az group create  \
    --name $RESOURCE_GROUP \
    --location $LOCATION \

Cree un entorno con un área de trabajo de Log Analytics generada automáticamente.

az containerapp env create \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION

Muestra el dominio predeterminado del entorno de la aplicación contenedora. Anote este dominio para usarlo en secciones posteriores.

az containerapp env show \
    --name $ENVIRONMENT \
    --resource-group $RESOURCE_GROUP \
    --query properties.defaultDomain

Preparar la aplicación para la implementación

Al implementar la aplicación en Azure Container Apps, la dirección URL de redireccionamiento cambia a la dirección URL de redireccionamiento de la instancia de la aplicación implementada en Azure Container Apps. Siga estos pasos para cambiar esta configuración en el archivo application.yml:

  1. Acceda al archivo src\main\resources\application.yml de la aplicación y cambie el valor de post-logout-redirect-uri por el nombre de dominio de la aplicación implementada, tal como se muestra en el ejemplo siguiente. No olvide reemplazar <API_NAME> y <default-domain-of-container-app-environment> por los valores reales. Por ejemplo, con el dominio predeterminado para el entorno de Azure Container App del paso anterior y ms-identity-api para el nombre de la aplicación, usaría https://ms-identity-api.<default-domain> para el valor post-logout-redirect-uri.

    post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
    
  2. Después de guardar este archivo, use el siguiente comando para volver a compilar la aplicación:

    mvn clean package
    

Importante

El archivo application.yml de la aplicación incluye actualmente el valor del secreto de cliente en el parámetro client-secret. No es recomendable dejar este valor en este archivo. Es posible que también tome algunos riesgos si confirma el archivo en un repositorio de Git. Para obtener el enfoque recomendado, consulte Administración de secretos en Azure Container Apps.

Actualizar el registro de la aplicación de Microsoft Entra ID

Como el URI de redireccionamiento cambia en la aplicación implementada en Azure Container Apps, también debe cambiar el URI de redireccionamiento en el registro de la aplicación de Microsoft Entra ID. Para realizar este cambio, siga estos pasos:

  1. Vaya a la página de Registros de aplicaciones de la plataforma de identidad de Microsoft para desarrolladores.

  2. Use el recuadro de búsqueda para buscar el registro de la aplicación; por ejemplo, java-servlet-webapp-authentication.

  3. Para abrir el registro de la aplicación, seleccione el nombre.

  4. Seleccione Autenticar desde el menú.

  5. En la sección Web - URIs de redireccionamiento, seleccione Agregar URI.

  6. Rellene el URI de la aplicación, anexando /login/oauth2/code/; por ejemplo, https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/.

  7. Seleccione Guardar.

Implementar la aplicación

Implemente el paquete JAR en Azure Container Apps.

Nota:

Si fuera necesario, especifique la versión de JDK en las variables del entorno de compilación Java. Para obtener más información, consulte Compilación de variables de entorno para Java en Azure Container Apps.

Ahora puede implementar el archivo WAR con el comando az containerapp up de la CLI.

az containerapp up \
    --name $API_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT \
    --artifact <JAR_FILE_PATH_AND_NAME> \
    --ingress external \
    --target-port 8080 \
    --query properties.configuration.ingress.fqdn

Nota:

La versión predeterminada de JDK es 17. Si necesita cambiar la versión de JDK por problemas de compatibilidad con la aplicación, puede usar el argumento --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION> para ajustar el número de versión.

Para ver más variables de entorno de compilación, consulte Compilación de variables de entorno para Java en Azure Container Apps.

Validación de la aplicación

En este ejemplo, el comando containerapp up incluye el argumento --query properties.configuration.ingress.fqdn, que devuelve el nombre de dominio completo (FQDN), también conocido como la dirección URL de la aplicación. Siga estos pasos para comprobar los registros de la aplicación para investigar cualquier problema de implementación:

  1. Acceda a la dirección URL de la aplicación final en la página Salida de la sección Implementación.

  2. En el panel de navegación de la página Información general de la instancia de Azure Container Apps, seleccione Registros para comprobar los registros de la aplicación.

Más información

Pasos siguientes

Para obtener más información y otras opciones de implementación, consulte los siguientes artículos: