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:
- .NET 8.0 o .NET 9.0
- Un entorno de ejecución de contenedor compatible con OCI, como:
- Docker Escritorio o Podman. Para obtener más información, consulte container runtime.
- Un entorno para desarrolladores integrado (IDE) o un editor de código, como:
- Visual Studio 2022 versión 17.9 o posterior (opcional)
-
Visual Studio Code (opcional)
- C# Dev Kit: extensión (opcional)
- JetBrains Rider con .NET.NET Aspire plugin (opcional)
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
, apt
o directamente a través de curl
. Para instalar azd
, consulte Instalar Azure Developer CLI.
Inicialización de la plantilla
Abra una nueva ventana de terminal y
cd
en el directorio del proyecto AppHost de su solución .NET.NET Aspire.Ejecute el comando
azd init
para inicializar el proyecto conazd
, 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.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
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
Escriba un nombre de entorno, que se usa para asignar un nombre a los recursos aprovisionados en Azure y administrar entornos diferentes, como
dev
yprod
.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
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
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)
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:
-
azd package
: los proyectos de la aplicación y sus dependencias se empaquetan en contenedores. -
azd provision
: Los recursos Azure que la aplicación necesitará son aprovisionados. -
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.
Haga clic en la App de Contenedor web
para abrirla en el portal.
Haga clic en el enlace de la URL de la aplicación para abrir la interfaz en el navegador.
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.