Compartir a través de


Implementación de un proyecto de .NET Aspire en Azure Container Apps

.NET .NET Aspire proyectos están diseñados para ejecutarse en entornos de contenedores. Azure Container Apps es un entorno totalmente administrado que permite ejecutar microservicios y aplicaciones en contenedores en una plataforma sin servidor. Este artículo le guiará a través de la creación de una nueva solución de .NET Aspire e implementación en Microsoft Azure Container Apps mediante el Azure Developer CLI (azd). Aprenderá a completar las siguientes tareas:

  • Provisiona un grupo de recursos de Azure y el Container Registry
  • Publicación de los proyectos de .NET Aspire como imágenes de contenedor en Azure Container Registry
  • Aprovisionamiento de un contenedor de Redis en Azure
  • Implementación de las aplicaciones en un entorno de Azure Container Apps
  • Visualización de registros de consola de aplicaciones para solucionar problemas de la aplicación

Prerrequisitos

Para trabajar con .NET.NET Aspire, necesita lo siguiente instalado localmente:

Para obtener más información, consulte configuración y herramientas de .NET.NET Aspirey sdk de .NET.NET Aspire.

Como alternativa a este tutorial y para obtener una guía más detallada, consulte Implementación de un proyecto de .NET Aspire en Azure Container Apps mediante azd (guía detallada).

Implementación de proyectos de .NET.NET Aspire con azd

Con .NET Aspire y Azure Container Apps (ACA), tiene un excelente escenario de hospedaje para crear aplicaciones nativas de la nube con .NET. Hemos creado algunas características nuevas excelentes en la Azure Developer CLI (azd) específica para ofrecer un desarrollo e implementación de .NET Aspire a Azure de manera fluida. Todavía puede usar las opciones de Azure CLI o Bicep cuando necesite un nivel de control pormenorizado sobre las implementaciones. Sin embargo, en el caso de los nuevos proyectos, no encontrará una ruta de acceso más fácil al éxito para obtener una nueva topología de microservicio implementada en la nube.

Crea un proyecto de .NET.NET Aspire

Como punto de partida, en este artículo se supone que ha creado un proyecto de .NET.NET Aspire a partir de la plantilla .NET.NET Aspire Aplicación de Inicio. Para obtener más información, consulte inicio rápido de : Compilación del primer proyecto de .NET.NET Aspire.

Nomenclatura de recursos

Al crear nuevos recursos Azure, es importante seguir los requisitos de nomenclatura. Para Azure Container Apps, el nombre debe tener entre 2 y 32 caracteres y consistir en letras minúsculas, números y guiones. El nombre debe comenzar con una letra y terminar con un carácter alfanumérico.

Para obtener más información, consulte Reglas y restricciones de nomenclatura para Azure recursos.

Instala el Azure Developer CLI

El proceso de instalación de azd varía en función del sistema operativo, pero está ampliamente disponible a través de winget, brew, apto directamente a través de curl. Para instalar azd, consulte Instalar Azure Developer CLI.

Inicialización de la plantilla

  1. Abra una nueva ventana de terminal y cd en el directorio del proyecto AppHost de su solución .NET.NET Aspire.

  2. Ejecute el comando azd init para inicializar el proyecto con azd, que inspeccionará la estructura del directorio local y determinará el tipo de aplicación.

    azd init
    

    Para obtener más información sobre el comando azd init, vea azd init.

  3. Seleccione Usar código en el directorio actual cuando azd le pida dos opciones de inicialización de la aplicación.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
    
  4. Después de examinar el directorio, azd le pide que confirme si ha encontrado el proyecto AppHost .NET.NET Aspirede correcto. Seleccione la opción Confirmar y continuar inicializando mi aplicación.

    Detected services:
    
      .NET (Aspire)
      Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj
    
    azd will generate the files necessary to host your app on Azure using Azure Container Apps.
    
    ? Select an option  [Use arrows to move, type to filter]
    > Confirm and continue initializing my app
      Cancel and exit
    
  5. Escriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como dev y prod.

    Generating files to run your app on Azure:
    
      (✓) Done: Generating ./azure.yaml
      (✓) Done: Generating ./next-steps.md
    
    SUCCESS: Your app is ready for the cloud!
    You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
    

azd genera una serie de archivos y los coloca en el directorio de trabajo. Estos archivos son:

  • azure .yaml: describe los servicios de la aplicación, como .NET Aspire proyecto AppHost, y los asigna a Azure recursos.
  • .azure/config.json: archivo de configuración que informa azd cuál es el entorno activo actual.
  • .azure/aspireazddev/.env: contiene invalidaciones específicas del entorno.

Implementación de la plantilla

  1. Una vez inicializada una plantilla de azd, el proceso de aprovisionamiento e implementación se puede ejecutar como un solo comando desde el directorio del proyecto AppHost mediante azd up:

    azd up
    
  2. Seleccione la suscripción a la que desea realizar la implementación en en la lista de opciones disponibles:

    Select an Azure Subscription to use:  [Use arrows to move, type to filter]
      1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
      2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
    
  3. Seleccione la ubicación de Azure deseada que se usará en la lista de opciones disponibles:

    Select an Azure location to use:  [Use arrows to move, type to filter]
      42. (US) Central US (centralus)
      43. (US) East US (eastus)
    > 44. (US) East US 2 (eastus2)
      46. (US) North Central US (northcentralus)
      47. (US) South Central US (southcentralus)
    

Después de realizar las selecciones, azd ejecuta el proceso de aprovisionamiento e implementación.

By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use:  1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>

Packaging services (azd package)


Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.

Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>

  You can view detailed progress in the Azure Portal:
  <LINK TO DEPLOYMENT>

  (✓) Done: Resource group: <YOUR RESOURCE GROUP>
  (✓) Done: Container Registry: <ID>
  (✓) Done: Log Analytics workspace: <ID>
  (✓) Done: Container Apps Environment: <ID>

SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>

Deploying services (azd deploy)

  (✓) Done: Deploying service apiservice
  - Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/

  (✓) Done: Deploying service webfrontend
  - Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/

Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>

SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.

El comando azd up actúa como contenedor para los siguientes comandos de azd individuales para aprovisionar e implementar los recursos en un solo paso:

  1. azd package: los proyectos de la aplicación y sus dependencias se empaquetan en contenedores.
  2. azd provision: Los recursos Azure que la aplicación necesitará son aprovisionados.
  3. azd deploy: los proyectos se insertan como contenedores en una instancia de Container Registry de Azure y, a continuación, se usan para crear nuevas revisiones de Azure Container Apps en las que se hospedará el código.

Cuando se completen las fases de azd up, la aplicación estará disponible en Azurey puede abrir el portal de Azure para explorar los recursos. azd también genera direcciones URL para acceder directamente a las aplicaciones implementadas.

Prueba de la aplicación implementada

Ahora que la aplicación se ha aprovisionado e implementado, puede acceder al portal de Azure. En el grupo de recursos donde implementó la aplicación, verá las tres aplicaciones de contenedor y otros recursos.

captura de pantalla del grupo de recursos del proyecto de .NET Aspire en el portal de Azure.

Haga clic en la App de Contenedor web para abrirla en el portal.

Captura de pantalla del front-end del proyecto de .NET Aspire en el portal de Azure.

Haga clic en el enlace de la URL de la aplicación para abrir la interfaz en el navegador.

captura de pantalla del front-end del proyecto de .NET.NET Aspire en el explorador.

Al hacer clic en el nodo "Weather" de la barra de navegación, la aplicación contenedora de front-end web realiza una llamada a la aplicación contenedora apiservice para obtener datos. La salida del front end se almacenará en caché mediante la aplicación contenedora redis y la integración de almacenamiento en caché de salida de .NET AspireRedis. A medida que actualice el front-end varias veces, observará que los datos meteorológicos se almacenan en caché. Se actualizará después de unos segundos.

Implementación del panel de .NET.NET Aspire

Puede implementar el panel de .NET.NET Aspire como parte de la aplicación hospedada. Esta funcionalidad ahora está completamente soportada. Al implementar, los registros de salida de azd imprimen una dirección URL adicional en el panel implementado.

Puede ejecutar azd monitor para iniciar automáticamente el panel.

azd monitor

Limpieza de recursos

Ejecute el siguiente comando Azure CLI para eliminar el grupo de recursos cuando ya no necesite los recursos de Azure que creó. Al eliminar el grupo de recursos también se eliminan los recursos contenidos en él.

az group delete --name <your-resource-group-name>

Para obtener más información, consulte Limpieza de recursos en Azure.