Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Los planes Básico, Estándar y Enterprise entraron en un período de retirada el 17 de marzo de 2025. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
Este artículo se aplica a: ❎ Básico/Estándar ✅ Enterprise
En este artículo se muestra cómo migrar un proyecto de Spring Cloud Gateway para VMWare Tanzu que se ejecuta en el plan Azure Spring Apps Enterprise a un proyecto de Spring Cloud Gateway de software de código abierto (OSS) autohospedado que se ejecuta como una aplicación de Azure Container Apps.
La versión de OSS de Spring Cloud Gateway mencionada en esta página se proporciona como ejemplo de referencia. Puede elegir otras distribuciones de Spring Cloud Gateway en función de sus necesidades.
Nota:
Las funciones que ofrece Spring Cloud Gateway para VMWare Tanzu son más amplias que las funciones de la versión de OSS. Asegúrese de examinar las diferencias y garantizar la compatibilidad antes de pasar a producción.
Requisitos previos
- Una instancia del plan Enterprise de Azure Spring Apps con Spring Cloud Gateway habilitado.
- Una instancia de Azure Container Apps. Para obtenr más información, consulte Inicio rápido: implementación de la primera aplicación contenedora mediante Azure Portal.
- Azure CLI
- Una instancia de Azure Container Registry con permisos suficientes para compilar e insertar imágenes de Docker. Para más información, consulte Inicio rápido: Creación de un registro de contenedor privado mediante Azure CLI.
Preparar el código de la aplicación Spring Cloud Gateway autohospedada
Para obtener el código de la aplicación Spring Cloud Gateway, siga estos pasos:
- Navegue a https://start.spring.io.
- Actualice los metadatos del proyecto estableciendo el campo Grupo en el nombre de su organización. Cambie los campos Artefacto y Nombre a puerta de enlace.
- Agregue las dependencias Reactive Gateway y Spring Boot Actuator.
- Deje las demás propiedades en sus valores predeterminados.
- Seleccione Generar para descargar el proyecto.
- Una vez descargado el proyecto, extráigalo.
Configurar la aplicación Spring Cloud Gateway
Ahora que ha descargado la aplicación Spring Cloud Gateway, configúrela en las siguientes secciones.
Configurar los archivos de propiedades de la aplicación
Para configurar el archivo de propiedades de la aplicación, siga estos pasos:
Navegue hasta el directorio gateway/src/main/resources del proyecto.
Cambie el nombre del archivo application.properties a application.yml.
Edite el archivo application.yml. Es típico el siguiente archivo application.yml:
spring: application: name: gateway cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: - GET - POST - PUT - DELETE allowedHeaders: - "*" allowCredentials: true maxAge: 3600 routes: - id: front uri: http://front-app predicates: - Path=/** - Method=GET order: 1000 filters: - StripPrefix=0 tags: - front
Configuración de CORS
Para migrar la configuración de uso compartido de recursos entre orígenes (CORS) del proyecto Spring Cloud Gateway para VMWare Tanzu, consulte Configuración de CORS para la configuración global de CORS y la configuración de CORS de ruta.
Escala
Al migrar a una aplicación de Spring Cloud Gateway en Azure Container Apps, el comportamiento de escalado debe alinearse con el modelo de Azure Container Apps. El recuento de instancias de Spring Cloud Gateway para VMWare Tanzu se asigna a min-replica y max-replica en Azure Container Apps. Puede configurar el escalado automático para la aplicación de puerta de enlace definiendo reglas de escalado. Para obtener más información, consulte Establecer reglas de escalado en Azure Container Apps.
Las combinaciones de CPU y memoria disponibles en Azure Spring Apps difieren de las combinaciones disponibles en Azure Container Apps. Al asignar asignaciones de recursos, asegúrese de que las configuraciones de CPU y memoria seleccionadas en Azure Container Apps se ajusten tanto a sus necesidades de rendimiento como a las opciones admitidas.
Certificados y dominios personalizados
Azure Container Apps admite certificados y dominios y personalizados. Para obtener más información sobre la migración de dominios personalizados configurados en Spring Cloud Gateway para VMWare Tanzu, consulte Certificados en Azure Container Apps.
Rutas
Puede migrar las rutas de Spring Cloud Gateway para Tanzu a Spring Cloud Gateway, como se muestra en el ejemplo application.yml. En la siguiente lista se describe la relación de asignación entre las rutas de Spring Cloud Gateway para VMWare Tanzu y las rutas de Spring Cloud Gateway:
- La propiedad
namede la ruta se asigna aid. - Las propiedades
appNameyprotocolse asignan al URI de la ruta, que debe ser el URI accesible para la instancia de Azure Container Apps. Asegúrese de que las aplicaciones de Azure Container Apps habilitan la entrada. - Los predicados y filtros de Spring Cloud Gateway para VMWare Tanzu se asignan a predicados y filtros de Spring Cloud Gateway. No se admiten predicados y filtros comerciales. Para obtener más información, consulte Filtros de ruta comercial en Spring Cloud Gateway para K8s.
Como ejemplo, considere el siguiente archivo JSON de configuración de ruta, test-api.json, que define la ruta test-api en Spring Cloud Gateway para VMWare Tanzu para la aplicación test:
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
A continuación, el siguiente archivo YAML muestra la configuración de ruta correspondiente para la aplicación Spring Cloud Gateway:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/test/api/healthcheck
- Method=GET
filters:
- AddRequestHeader=X-Request-red, blue
- StripPrefix=1
Spring Cloud Gateway para VMWare Tanzu establece StripPrefix=1 de forma predeterminada en todas las rutas. Para migrar a Spring Cloud Gateway, debe establecer StripPrefix=1 explícitamente en la configuración del filtro.
Para permitir que la aplicación Spring Cloud Gateway acceda a otras aplicaciones a través del nombre de la aplicación, debe habilitar la entrada para las aplicaciones de Azure Container App. También puede establecer el nombre de dominio completo (FQDN) accesible de la aplicación Azure Container Apps para que sea el URI de la ruta, siguiendo el formato https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Nota:
Hay algunos predicados comerciales y filtros comerciales que no son compatibles con Spring Cloud Gateway.
Caché de respuestas
Si habilita la caché de respuestas globalmente en Spring Cloud Gateway para VMWare Tanzu, utilice la siguiente configuración en Spring Cloud Gateway. Para obtener más información, consulte Filtro de caché de respuesta local.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Si habilita la caché de respuesta para la ruta, puede usar el filtro LocalResponseCache en la configuración de la regla de enrutamiento de la puerta de enlace administrada para Spring mediante el siguiente ejemplo:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integración con APM
Puede habilitar la supervisión del rendimiento de las aplicaciones (APM) para la aplicación Spring Cloud Gateway. Para obtener más información, consulte Integrate application performance monitoring into container images (Integración de APM en imágenes de contenedor).
Implementación en Azure Container Apps
Una vez que la configuración de Spring Cloud Gateway esté lista, compile la imagen con Azure Container Registry e impleméntela en Azure Container Apps.
Compilación e inserción de la imagen de Docker
Para compilar e insertar la imagen de Docker, siga estos pasos:
En el directorio del proyecto de Spring Cloud Gateway, cree un Dockerfile con el siguiente contenido:
Nota:
Como alternativa, use el Dockerfile de ejemplo de ACME Fitness Store.
FROM mcr.microsoft.com/openjdk/jdk:17-mariner as build WORKDIR /staging # Install gradle RUN tdnf install -y wget unzip RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \ unzip -d /opt/gradle gradle-8.8-bin.zip && \ chmod +x /opt/gradle/gradle-8.8/bin/gradle ENV GRADLE_HOME=/opt/gradle/gradle-8.8 ENV PATH=$PATH:$GRADLE_HOME/bin COPY . . # Compile with gradle RUN gradle build -x test FROM mcr.microsoft.com/openjdk/jdk:17-mariner as runtime WORKDIR /app COPY --from=build /staging/build/libs/gateway-0.0.1-SNAPSHOT.jar . ENTRYPOINT ["java", "-jar", "gateway-0.0.1-SNAPSHOT.jar"]Utilice los siguientes comandos para compilar la imagen de la puerta de enlace:
az acr login --name <azure-container-registry-name> az acr build \ --resource-group <resource-group-name> \ --image gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT \ --registry <azure-container-registry-name> \ --file Dockerfile .Asegúrese de que se ha creado la imagen de puerta de enlace y obtenga la etiqueta de imagen, que utiliza el siguiente formato:
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Implementar la imagen en Azure Container Apps
Una vez que la imagen de la aplicación de puerta de enlace esté lista, impleméntela como una aplicación de Azure Container Apps mediante el siguiente comando. Reemplace el marcador de posición <container-image-of-gateway> con la etiqueta de imagen recuperada en el paso anterior.
az containerapp up \
--resource-group <resource-group-name> \
--name gateway \
--environment <azure-container-app-environment-name> \
--image <container-image-of-gateway> \
--target-port 8080 \
--ingress external
Acceda al FQDN de la aplicación Spring Cloud Gateway para comprobar que se está ejecutando.
Solución de problemas
Si tiene problemas al ejecutar la aplicación Spring Cloud Gateway, puede ver los registros históricos y en tiempo real de la aplicación gateway en Azure Container Apps. Para más información, consulte Registro de aplicaciones en Azure Container Apps.
También puede supervisar las métricas de una aplicación de puerta de enlace. Para más información, consulte Supervisar métricas de Azure Container Apps.
Limitación conocida
El OSS Spring Cloud Gateway no admite de forma nativa las siguientes características comerciales:
- Metadatos utilizados para generar documentación de OpenAPI.
- Funcionalidad de inicio de sesión único (SSO).
Si necesita estas características, es posible que deba considerar otras soluciones comerciales, como Spring Cloud Gateway para VMWare Tanzu.