Comparteix a través de


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

Nota:

Los planes Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retirada de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan Estándar por consumo y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el plan Estándar por consumo y dedicado de Azure Spring Apps a Azure Container Apps.

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 Finalización del soporte técnico
3.2.x 2023.0.x también conocido como Leyton 2024-11-23
3.1.x 2022.0.3+ también conocido como Kilburn 2024-05-18
3.0.x 2022.0.3+ también conocido como Kilburn 2023-11-24
2.7.x 2021.0.3+ también conocido como Jubileo 2023-11-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, incluya la siguiente dependencia spring-cloud-config-client en la sección de dependencias del archivo pom.xml:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

Advertencia

No especifique spring.cloud.config.enabled=false en la configuración de arranque. De lo contrario, la aplicación dejará de funcionar con Config Server.

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.