Preparación de una aplicación para su implementación en Azure Spring Apps

Nota:

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

La información de este artículo puede ponerse en práctica en: ✔️ Básico o Estándar ✔️ Enterprise

En este artículo se muestra cómo preparar una aplicación Steeltoe existente para su implementación en Azure Spring Apps. Azure Spring Apps proporciona servicios sólidos para hospedar, supervisar, escalar y actualizar una aplicación de Steeltoe.

En este artículo se explican las dependencias, la configuración y el código necesarios para ejecutar una aplicación de Steeltoe de .NET Core en Azure Spring Apps. Para obtener información sobre cómo implementar una aplicación en Azure Spring Apps, consulte Implementación de la primera aplicación de Spring Boot en Azure Spring Apps.

Nota:

La compatibilidad de Steeltoe con Azure Spring Apps se ofrece actualmente como versión preliminar pública. Las ofertas de versión preliminar pública permiten a los clientes experimentar con nuevas características antes de su publicación oficial. Los servicios y las características en versión preliminar pública no están diseñados para su uso en producción. Para obtener más información sobre el soporte técnico durante las versiones preliminares, revise las preguntas frecuentes o envíe una solicitud de soporte técnico.

Versiones compatibles

Azure Spring Apps admite:

  • .NET Core 3.1
  • Steeltoe 2.4 y 3.0

Dependencias

Para Steeltoe 2.4, agregue el paquete Microsoft.Azure.SpringCloud.Client 1.x.x más reciente al archivo del proyecto:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="1.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.ExporterCore" Version="2.4.4" />
</ItemGroup>

Para Steeltoe 3.0, agregue el paquete Microsoft.Azure.SpringCloud.Client 2.x.x más reciente al archivo del proyecto:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="3.0.0" />
</ItemGroup>

Actualizar Program.cs

En el método Program.Main, llame al método UseAzureSpringCloudService.

Para Steeltoe 2.4.4, llame a UseAzureSpringCloudService después de ConfigureWebHostDefaults y de AddConfigServer, si se ha llamado:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer()
        .UseAzureSpringCloudService();

Para Steeltoe 3.0.0, llame a UseAzureSpringCloudService antes de ConfigureWebHostDefaults y antes de cualquier código de configuración de Steeltoe:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseAzureSpringCloudService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer();

Habilitación de la detección de servicios del servidor de Eureka

Nota:

Eureka no es aplicable al plan Enterprise. Si usa el plan Enterprise, consulte Uso de Service Registry.

En el origen de configuración que usa cuando la aplicación se ejecute en Azure Spring Apps, establezca spring.application.name en el mismo nombre que la aplicación Azure Spring Apps en la que se implementa el proyecto.

Por ejemplo, si implementa un proyecto .NET denominado EurekaDataProvider en una aplicación de Azure Spring Apps denominada planet-weather-provider, el archivo appSettings.json debe incluir el siguiente JSON:

"spring": {
  "application": {
    "name": "planet-weather-provider"
  }
}

Uso de la detección de servicios

Para llamar a un servicio mediante la detección de servicios del servidor de Eureka, realice solicitudes HTTP a http://<app_name>, donde app_name sea el valor de spring.application.name de la aplicación de destino. Por ejemplo, el código siguiente llama al servicio planet-weather-provider:

using (var client = new HttpClient(discoveryHandler, false))
{
    var responses = await Task.WhenAll(
        client.GetAsync("http://planet-weather-provider/weatherforecast/mercury"),
        client.GetAsync("http://planet-weather-provider/weatherforecast/saturn"));
    var weathers = await Task.WhenAll(from res in responses select res.Content.ReadAsStringAsync());
    return new[]
    {
        new KeyValuePair<string, string>("Mercury", weathers[0]),
        new KeyValuePair<string, string>("Saturn", weathers[1]),
    };
}

En este artículo, se muestra cómo preparar una aplicación de Java Spring existente para su implementación en Azure Spring Apps. Si se ha configurado correctamente, Azure Spring Apps proporciona servicios sólidos para supervisar, escalar y actualizar cualquier aplicación Java Spring.

Antes de ejecutar este ejemplo, puede probar la guía de inicio rápido básica.

En otros ejemplos se explica cómo implementar una aplicación en Azure Spring Apps cuando se configura el archivo POM.

En este artículo se explican las dependencias necesarias y cómo agregarlas al archivo POM.

Versión del entorno de ejecución de Java

Para más información, consulte la sección Runtime de Java y versiones del sistema operativo de las preguntas frecuentes de Azure Spring Apps.

Versiones de Spring Boot y Spring Cloud

Para preparar una aplicación de Spring Boot existente para la implementación en Azure Spring Apps, incluya las dependencias de Spring Boot y Spring Cloud en el archivo POM de la aplicación, como se muestra en las siguientes secciones.

Azure Spring Apps admite la versión principal más reciente de Spring Boot o Spring Cloud a partir de 30 días después de su lanzamiento. Azure Spring Apps admite la versión secundaria más reciente en cuanto se publique. Puede obtener versiones compatibles en las páginas de versiones de Spring Boot y versiones de Spring Cloud, respectivamente.

En la tabla siguiente se enumeran las combinaciones admitidas de Spring Boot y Spring Cloud:

Versión de Spring Boot Versión de Spring Cloud Fin del soporte técnico comercial
3.2.x 2023.0.x también conocido como Leyton 2026-02-23
3.1.x 2022.0.3+ también conocido como Kilburn 2025-08-18
3.0.x 2022.0.3+ también conocido como Kilburn 2025-02-24
2.7.x 2021.0.3+ también conocido como Jubileo 2025-08-24
2.6.x 2021.0.3+ también conocido como Jubileo 2024-02-24

Para más información, consulte las siguientes páginas:

Para habilitar las características integradas de Azure Spring Apps desde el registro de servicio al seguimiento distribuido, debe incluir también las dependencias siguientes en la aplicación. Puede quitar algunas de estas dependencias si no necesita las características correspondientes para las aplicaciones específicas.

Registro del servicio

Para usar el servicio administrado Azure Service Registry, incluya la dependencia spring-cloud-starter-netflix-eureka-client en el archivo pom.xml, como se muestra aquí:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

El punto de conexión del servidor de Service Registry se inserta automáticamente como variables de entorno con la aplicación. Las aplicaciones se pueden registrar por sí solas en el servidor de Service Registry y detectar otras aplicaciones dependientes.

Anotación de EnableDiscoveryClient

Agregue la anotación siguiente al código fuente de la aplicación.

@EnableDiscoveryClient

Por ejemplo, vea la aplicación piggymetrics de ejemplos anteriores:

package com.piggymetrics.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy

public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

Configuración distribuida

Para habilitar la configuración distribuida en el plan Enterprise, use Application Configuration Service for VMware Tanzu, que es uno de los componentes propietarios de VMware Tanzu. Application Configuration Service for Tanzu es nativo de Kubernetes y es diferente de Spring Cloud Config Server. Application Configuration Service for Tanzu permite la administración de recursos ConfigMap nativos de Kubernetes que se rellenan a partir de las propiedades definidas en uno o varios repositorios de Git.

En el plan Enterprise, no hay Spring Cloud Config Server, pero puede usar Application Configuration Service for Tanzu para administrar configuraciones centralizadas. Para más información, consulte Uso de Application Configuration Service for Tanzu.

Para usar Application Configuration Service for Tanzu, realice los pasos siguientes para cada una de las aplicaciones:

  1. Agregue un enlace de aplicación explícito para declarar que la aplicación necesita usar Application Configuration Service for Tanzu.

    Nota:

    Al cambiar el estado entre enlazado y desenlazado, debe reiniciar o volver a implementar la aplicación para que el cambio surta efecto.

  2. Establezca patrones de archivo de configuración. Los patrones de archivo de configuración permiten elegir qué aplicación y perfil usa la aplicación. Para más información, consulte la sección Patrón de Uso de Application Configuration Service for Tanzu.

    Otra opción es establecer los patrones de archivo de configuración al mismo tiempo que la implementación de la aplicación, como se muestra en el ejemplo siguiente:

       az spring app deploy \
           --name <app-name> \
           --artifact-path <path-to-your-JAR-file> \
           --config-file-pattern <config-file-pattern>
    

Métricas

Incluya la dependencia spring-boot-starter-actuator en la sección de dependencias del archivo pom.xml, como se muestra aquí:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Se extraen métricas periódicamente de los puntos de conexión JMX. Estas métricas se pueden visualizar mediante Azure Portal.

Advertencia

Debe especificar spring.jmx.enabled=true en la propiedad de configuración. De lo contrario, no se pueden visualizar las métricas en Azure Portal.

Consulte también

Pasos siguientes

En este artículo, ha aprendido a configurar una aplicación de Java Spring para su implementación en Azure Spring Apps. Para aprender a configurar una instancia de Config Server, consulte el artículo Configuración de una instancia de Config Server.

Hay más ejemplos disponibles en GitHub: Ejemplos de Azure Spring Apps.