Inicio rápido: Implementación de la primera aplicación en Azure Spring Cloud
En este inicio rápido se explica cómo implementar una sencilla aplicación para que se ejecute en Azure Spring Cloud.
Nota
La compatibilidad de Steeltoe con Azure Spring Cloud 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.
Al seguir esta guía de inicio rápido, aprenderá a:
- Generación de un proyecto básico de Steeltoe para .NET Core
- Aprovisionar una instancia del servicio Azure Spring Cloud
- Compilar e implementar la aplicación con un punto de conexión público
- Streaming de registros en tiempo real
El código de aplicación que se usa en esta guía de inicio rápido es una aplicación sencilla compilada con una plantilla de proyecto de API web de .NET Core. Cuando haya completado este ejemplo, se podrá acceder en línea a la aplicación de ejemplo proporcionada y se podrá administrar mediante Azure Portal y la CLI de Azure.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- SDK de .NET Core 3.1. El servicio Azure Spring Cloud admite .NET Core 3.1 y versiones posteriores.
- CLI de Azure, versión 2.0.67 o posterior.
- Git.
Instalación de la extensión de la CLI de Azure
Compruebe que la versión de la CLI de Azure sea 2.0.67 o posterior:
az --version
Instale la extensión de Azure Spring Cloud para la CLI de Azure con el siguiente comando:
az extension add --name spring-cloud
Inicio de sesión en Azure
Inicie sesión en la CLI de Azure.
az loginSi tiene más de una suscripción, elija la que quiere usar para esta guía de inicio rápido.
az account list -o tableaz account set --subscription <Name or ID of a subscription from the last step>
Generación de un proyecto de Steeltoe para .NET Core
En Visual Studio, cree una aplicación web de ASP.NET Core denominada "hello-world" con la plantilla de proyecto de la API. Tenga en cuenta que habrá un controlador WeatherForecastController generado automáticamente, que será el punto de conexión de prueba más adelante.
Cree una carpeta para el código fuente del proyecto y genere el proyecto.
mkdir source-codecd source-codedotnet new webapi -n hello-world --framework netcoreapp3.1Vaya al directorio del proyecto.
cd hello-worldEdite el archivo appsettings.json para agregar la siguiente configuración:
"spring": { "application": { "name": "hello-world" } }, "eureka": { "client": { "shouldFetchRegistry": true, "shouldRegisterWithEureka": true } }También en appsettings.json, cambie el nivel de registro de la categoría
MicrosoftdeWarningaInformation. Este cambio garantiza que los registros se generarán al ver los registros de streaming en un paso posterior.El archivo appsettings.json ahora es similar al ejemplo siguiente:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Information", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "spring": { "application": { "name": "hello-world" } }, "eureka": { "client": { "shouldFetchRegistry": true, "shouldRegisterWithEureka": true } } }Agregue dependencias y una tarea
Zipal archivo .csproj:<ItemGroup> <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.1.0" /> <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" /> </ItemGroup> <Target Name="Publish-Zip" AfterTargets="Publish"> <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/deploy.zip" Overwrite="true" /> </Target>Los paquetes son para la detección de servicios de Steeltoe y la biblioteca cliente de Azure Spring Cloud. La tarea
Zipes para la implementación en Azure. Al ejecutar el comandodotnet publish, se generan los archivos binarios en la carpeta publish, y esta tarea comprime la carpeta publish en un archivo .zip que se carga en Azure.En el archivo Program.cs, agregue una directiva
usingy el código que usa la biblioteca cliente de Azure Spring Cloud:using Microsoft.Azure.SpringCloud.Client;public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseAzureSpringCloudService() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });En el archivo Startup.cs, agregue la directiva
usingy el código que usa la detección de servicios de Steeltoe al final del métodoConfigureServices:using Steeltoe.Discovery.Client;public void ConfigureServices(IServiceCollection services) { // Template code not shown. services.AddDiscoveryClient(Configuration); }Compile el proyecto para asegurarse de que no haya errores de compilación.
dotnet build
Aprovisionar una instancia de servicio
En el procedimiento siguiente se crea una instancia de Azure Spring Cloud desde Azure Portal.
Abra Azure Portal.
En el cuadro de búsqueda superior, busque Azure Spring Cloud.
Seleccione Azure Spring Cloud en los resultados.

En la página Azure Spring Cloud, seleccione + Create (+ Crear).

Rellene el formulario en la página Crear de Azure Spring Cloud. Tenga en cuenta las directrices siguientes:
- Suscripción: seleccione la suscripción a la que desea que se facture este recurso.
- Grupo de recursos: Cree un nuevo grupo de recursos. El nombre que escriba aquí se usará en pasos posteriores como <resource group name> .
- Detalles o nombre del servicio: Especifique <service instance name> . El nombre debe tener entre 4 y 32 caracteres, y solo puede contener números, letras minúsculas y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.
- Región: seleccione la región de la instancia de servicio.

Seleccione Revisar y crear.
Seleccione Crear.
Compilación e implementación de la aplicación
El procedimiento siguiente genera e implementa el proyecto que creó anteriormente.
Asegúrese de que el símbolo del sistema todavía esté en la carpeta del proyecto.
Ejecute el siguiente comando para compilar el proyecto, publicar los archivos binarios y almacenar los archivos binarios en un archivo .zip en la carpeta del proyecto.
dotnet publish -c release -o ./publishCree una aplicación en la instancia de Azure Spring Cloud con un punto de conexión público asignado. Use el mismo nombre de aplicación "hello-world" que especificó en appsettings.json.
az spring-cloud app create -n hello-world -s <service instance name> -g <resource group name> --assign-endpoint --runtime-version NetCore_31Implemente el archivo .zip en la aplicación.
az spring-cloud app deploy -n hello-world -s <service instance name> -g <resource group name> --runtime-version NetCore_31 --main-entry hello-world.dll --artifact-path ./deploy.zipLa opción
--main-entryidentifica el archivo .dll que contiene el punto de entrada de la aplicación. Una vez que el servicio carga el archivo .zip, extrae todos los archivos y carpetas e intenta ejecutar el punto de entrada en el archivo .dll especificado por--main-entry.La implementación de la aplicación tarda unos minutos en finalizar. Para confirmar que se ha implementado, vaya a la sección Aplicaciones de Azure Portal.
Prueba de la aplicación
Una vez completada la implementación, puede acceder a la aplicación con la dirección URL siguiente:
https://<service instance name>-hello-world.azuremicroservices.io/weatherforecast
La aplicación devuelve datos JSON similares al ejemplo siguiente:
[{"date":"2020-09-08T21:01:50.0198835+00:00","temperatureC":14,"temperatureF":57,"summary":"Bracing"},{"date":"2020-09-09T21:01:50.0200697+00:00","temperatureC":-14,"temperatureF":7,"summary":"Bracing"},{"date":"2020-09-10T21:01:50.0200715+00:00","temperatureC":27,"temperatureF":80,"summary":"Freezing"},{"date":"2020-09-11T21:01:50.0200717+00:00","temperatureC":18,"temperatureF":64,"summary":"Chilly"},{"date":"2020-09-12T21:01:50.0200719+00:00","temperatureC":16,"temperatureF":60,"summary":"Chilly"}]
Streaming de registros en tiempo real
Use el comando siguiente para obtener registros en tiempo real de la aplicación.
az spring-cloud app logs -n hello-world -s <service instance name> -g <resource group name> --lines 100 -f
Los registros aparecen en la salida:
[Azure Spring Cloud] The following environment variables are loaded:
2020-09-08 20:58:42,432 INFO supervisord started with pid 1
2020-09-08 20:58:43,435 INFO spawned: 'event-gather_00' with pid 9
2020-09-08 20:58:43,436 INFO spawned: 'dotnet-app_00' with pid 10
2020-09-08 20:58:43 [Warning] No managed processes are running. Wait for 30 seconds...
2020-09-08 20:58:44,843 INFO success: event-gather_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2020-09-08 20:58:44,843 INFO success: dotnet-app_00 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
←[40m←[32minfo←[39m←[22m←[49m: Steeltoe.Discovery.Eureka.DiscoveryClient[0]
Starting HeartBeat
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://[::]:1025
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /netcorepublish/6e4db42a-b160-4b83-a771-c91adec18c60
2020-09-08 21:00:13 [Information] [10] Start listening...
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://asc-svc-hello-world.azuremicroservices.io/weatherforecast
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'hello_world.Controllers.WeatherForecastController.Get (hello-world)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "Get", controller = "WeatherForecast"}. Executing controller action with signature System.Collections.Generic.IEnumerable`1[hello_world.WeatherForecast] Get() on controller hello_world.Controllers.WeatherForecastController (hello-world).
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
Executing ObjectResult, writing value of type 'hello_world.WeatherForecast[]'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action hello_world.Controllers.WeatherForecastController.Get (hello-world) in 1.8902ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'hello_world.Controllers.WeatherForecastController.Get (hello-world)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 4.2591ms 200 application/json; charset=utf-8
Sugerencia
Use az spring-cloud app logs -h para explorar más parámetros y funcionalidades de las secuencias de registro.
Para ver las características avanzadas de análisis de registros, vaya a la pestaña Registros en el menú de Azure Portal. Aquí los registros tienen una latencia de unos minutos.
En este inicio rápido se explica cómo implementar una sencilla aplicación en Azure Spring Cloud.
El código de aplicación que se usa en este tutorial es una aplicación sencilla compilada con Spring Initializr. Cuando haya completado este ejemplo, se podrá acceder en línea a la aplicación de ejemplo proporcionada y se podrá administrar mediante Azure Portal.
En este inicio rápido se explica cómo:
- Generar un proyecto básico de Spring Cloud
- Aprovisionar una instancia de servicio
- Compilar e implementar la aplicación con un punto de conexión público
- Streaming de registros en tiempo real
Requisitos previos
Para completar esta guía de inicio rápido:
- Instale JDK 8 u 11.
- Registro para obtener una suscripción a Azure
- (Opcional) Instale la versión 2.0.67 de la CLI de Azure, o cualquier versión superior, y la extensión de Azure Spring Cloud con el comando
az extension add --name spring-cloud - (Opcional) Instale de IntelliJ IDEA
- (Opcional) Instale Azure Toolkit for IntelliJ e inicie sesión
- (Opcional) Instale Maven. Si usa Azure Cloud Shell, esta instalación no es necesaria.
Generación de un proyecto de Spring Cloud
Comience con Spring Initializr para generar un proyecto de ejemplo con las dependencias recomendadas para Azure Spring Cloud. Este vínculo usa la siguiente dirección URL para proporcionarle la configuración predeterminada.
https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.5&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=hellospring&name=hellospring&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.hellospring&dependencies=web,cloud-eureka,actuator,cloud-config-client
En la imagen siguiente se muestra la configuración de Initializr recomendada para este proyecto de ejemplo.
Este ejemplo usa la versión 8 de Java. Si desea usar la versión 11, cambie la opción en los metadatos del proyecto.

Haga clic en Generar cuando se establezcan todas las dependencias.
Descargue y desempaquete el paquete y, a continuación, cree un controlador web para una aplicación web sencilla agregando el archivo src/main/java/com/example/hellospring/HelloController.java con el siguiente contenido:
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Cloud!"; } }
Aprovisionamiento de una instancia de Azure Spring Cloud
En el procedimiento siguiente se crea una instancia de Azure Spring Cloud desde Azure Portal.
Abra Azure Portal en una pestaña ventana.
En el cuadro de búsqueda superior, busque Azure Spring Cloud.
Seleccione Azure Spring Cloud en los resultados.

En la página Azure Spring Cloud, seleccione + Create (+ Crear).

Rellene el formulario en la página Crear de Azure Spring Cloud. Tenga en cuenta las directrices siguientes:
- Suscripción: seleccione la suscripción a la que desea que se facture este recurso.
- Grupo de recursos: se recomienda crear grupos de recursos para los nuevos recursos. Usará este grupo de recursos en pasos posteriores como <resource group name> .
- Detalles o nombre del servicio: Especifique <service instance name> . El nombre debe tener entre 4 y 32 caracteres, y solo puede contener números, letras minúsculas y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.
- Ubicación: seleccione la región de la instancia de servicio.

Seleccione Revisar y crear.
Compilación e implementación de la aplicación
El siguiente procedimiento compila e implementa la aplicación mediante la CLI de Azure. Ejecute el siguiente comando en la raíz del proyecto.
Inicie sesión en Azure y elija su suscripción.
az loginSi tiene más de una suscripción, use el siguiente comando para enumerar las suscripciones a las que tiene acceso y, a continuación, elija la que quiera usar para este inicio rápido.
az account list -o tableUse el siguiente comando para establecer la suscripción predeterminada que se usará con los comandos de la CLI de Azure en este inicio rápido.
az account set --subscription <Name or ID of a subscription from the last step>Compile el proyecto mediante Maven:
mvn clean package -DskipTestsCree la aplicación con un punto de conexión público asignado. Si seleccionó la versión 11 de Java al generar el proyecto de Spring Cloud, incluya el modificador
--runtime-version=Java_11.az spring-cloud app create -n hellospring -s <service instance name> -g <resource group name> --assign-endpoint trueImplemente el archivo JAR de la aplicación (
target\hellospring-0.0.1-SNAPSHOT.jaren Windows):az spring-cloud app deploy -n hellospring -s <service instance name> -g <resource group name> --artifact-path <jar file path>/hellospring-0.0.1-SNAPSHOT.jarLa implementación de la aplicación tarda unos minutos en finalizar. Para confirmar que se ha implementado, vaya a la sección Aplicaciones de Azure Portal. Debería ver el estado de la aplicación.
Una vez completada la implementación, puede acceder a la aplicación en https://<service instance name>-hellospring.azuremicroservices.io/.
Registros de streaming en tiempo real
Use el comando siguiente para obtener registros en tiempo real de la aplicación.
az spring-cloud app logs -n hellospring -s <service instance name> -g <resource group name> --lines 100 -f
Los registros aparecen en los resultados:
Sugerencia
Use az spring-cloud app logs -h para explorar más parámetros y funcionalidades de las secuencias de registro.
Para ver las características avanzadas de los análisis de registros, vaya a la pestaña Registros del menú de Azure Portal. Aquí los registros tienen una latencia de unos minutos.
Limpieza de recursos
En los pasos anteriores, creó recursos de Azure que seguirán acumulando cargos mientras permanezcan en la suscripción. Si prevé que no va a necesitar estos recursos en el futuro, elimine el grupo de recursos del portal o ejecutando el siguiente comando en la CLI de Azure:
az group delete --name <your resource group name> --yes
Pasos siguientes
En este inicio rápido ha aprendido a:
- Generar un proyecto básico de Spring Cloud
- Aprovisionar una instancia de servicio
- Compilar e implementar la aplicación con un punto de conexión público
- Streaming de registros en tiempo real
Para aprender a usar más funcionalidades de Azure Spring, avance a la serie de guías de inicio rápido que implementa una aplicación de ejemplo en Azure Spring Cloud:
Hay más ejemplos disponibles en GitHub: Ejemplos de Azure Spring Cloud.







