Bereitstellen eines .NET Aspire Projekts auf Azure Container Apps
.NET
.NET Aspire Projekte sollen in containerisierten Umgebungen ausgeführt werden.
Azure Container Apps ist eine vollständig verwaltete Umgebung, in der Sie Microservices und containerisierte Anwendungen auf einer serverlosen Plattform ausführen können. In diesem Artikel wird Ihnen gezeigt, wie Sie eine neue .NET Aspire-Lösung erstellen und auf Microsoft Azure Container Apps bereitstellen, indem Sie Azure Developer CLI (azd
) verwenden. Sie erfahren, wie Sie die folgenden Aufgaben ausführen:
- Erstellen einer Azure-Ressourcengruppe und eines Container-Registers
- Veröffentlichen Sie die .NET Aspire-Projekte als Container-Images in der Azure-Container-Registrierung
- Bereitstellen eines Redis Containers in Azure
- Stellen Sie die Apps in einer Azure Container Apps Umgebung bereit
- Anzeigen von Konsole-Logfiles der Anwendung zur Behebung von Anwendungsproblemen
Voraussetzungen
Um mit .NET.NET Aspirezu arbeiten, benötigen Sie folgendes lokal installiert:
- .NET 8.0 oder .NET 9,0
- Eine OCI-kompatible Containerlaufzeit, z. B.:
- Docker Desktop oder Podman. Weitere Informationen finden Sie unter container runtime.
- Eine integrierte Entwicklerumgebung (Integrated Developer Environment, IDE) oder ein Code-Editor, z. B.:
- Visual Studio 2022 Version 17.9 oder höher (optional)
-
Visual Studio Code (optional)
- C# Dev Kit: Erweiterung (optional)
- JetBrains Rider mit .NET.NET Aspire Plug-in (Optional)
Weitere Informationen finden Sie unter .NET.NET Aspire Setup und Toolingund .NET.NET Aspire SDK.
Als Alternative zu diesem Lernprogramm und für eine ausführlichere Anleitung finden Sie unter , wie ein .NET Aspire Projekt mithilfe von Azure Container Apps auf azd
bereitgestellt wird (ausführlicher Leitfaden).
Bereitstelle .NET.NET Aspire-Projekte mit azd
Mit .NET Aspire und Azure Container Apps (ACA) haben Sie ein großartiges Hostingszenario für die Erstellung Ihrer cloudeigenen Apps mit .NET. Wir haben einige großartige neue Funktionen in die Azure Developer CLI (azd
) integriert, die speziell für die Entwicklung und Bereitstellung von .NET Aspire nach Azure eine reibungslose Erfahrung schaffen sollen. Sie können die Azure CLI- und/oder Bicep-Optionen weiterhin verwenden, wenn Sie eine präzise Kontrolle über Ihre Bereitstellungen benötigen. Aber für neue Projekte werden Sie keinen einfacheren Weg zum Erfolg finden, um eine neue Mikroservicetopologie in der Cloud bereitstellen zu lassen.
Erstellen Sie ein .NET.NET Aspire Projekt
Als Ausgangspunkt geht in diesem Artikel davon aus, dass Sie ein .NET.NET Aspire Projekt aus der Vorlage .NET.NET Aspire Startanwendung erstellt haben. Weitere Informationen finden Sie unter Schnellstart: Erstellen Ihres ersten .NET.NET Aspire Projekts.
Ressourcenbenennung
Wenn Sie neue Azure Ressourcen erstellen, ist es wichtig, die Benennungsanforderungen zu erfüllen. Bei Azure Container Appsmuss der Name 2 bis 32 Zeichen lang sein und aus Kleinbuchstaben, Zahlen und Bindestrichen bestehen. Der Name muss mit einem Buchstaben beginnen und mit einem alphanumerischen Zeichen enden.
Weitere Informationen finden Sie unter Benennungsregeln und Einschränkungen für Azure Ressourcen.
Installieren Sie das Azure Developer CLI
Der Prozess für die Installation von azd
variiert je nach Betriebssystem, ist aber über winget
, brew
, apt
oder direkt über curl
verfügbar. Um azd
zu installieren, siehe Installieren Azure Developer CLI.
Initialisieren der Vorlage
Öffnen Sie ein neues Terminalfenster, und
cd
Sie in das AppHost- Projektverzeichnis Ihrer .NET.NET Aspire Lösung ein.Führen Sie den befehl
azd init
aus, um Ihr Projekt mitazd
zu initialisieren, wodurch die lokale Verzeichnisstruktur überprüft und der App-Typ bestimmt wird.azd init
Weitere Informationen zum befehl
azd init
finden Sie unter azd init.Wählen Sie Verwenden Sie den Code im aktuellen Verzeichnis aus, wenn
azd
Sie auffordert, zwischen zwei App-Initialisierungsoptionen zu wählen.? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
Nach dem Scannen des Verzeichnisses werden Sie von
azd
aufgefordert, zu bestätigen, dass es das richtige .NET.NET AspireAppHost- Projekt gefunden hat. Wählen Sie die Option "Bestätigen und mit der Initialisierung meiner App fortfahren" aus.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
Geben Sie einen Umgebungsnamen ein, der verwendet wird, um bereitgestellte Ressourcen in Azure zu benennen und verschiedene Umgebungen wie
dev
undprod
zu verwalten.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
generiert eine Reihe von Dateien und platziert sie in das Arbeitsverzeichnis. Diese Dateien sind:
- azure.yaml-: Beschreibt die Dienste der App, z. B. .NET Aspire AppHost-Projekt, und ordnet sie Azure Ressourcen zu.
-
.azure/config.json: Konfigurationsdatei, die
azd
informiert, was die aktuelle aktive Umgebung ist. - .azure/aspireazddev/.env: Enthält umgebungsspezifische Anpassungen.
Implementieren der Vorlage
Sobald eine
azd
Vorlage initialisiert wurde, kann der Bereitstellungs- und Implementierungsprozess mit einem einzigen Befehl aus dem AppHost--Projektverzeichnis mithilfe von azd upausgeführt werden.azd up
Wählen Sie das Abonnement aus, das Sie verwenden möchten, aus der Liste der verfügbaren Optionen.
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)
Wählen Sie den gewünschten Azure Speicherort aus der Liste der verfügbaren Optionen aus:
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)
Nachdem Sie Ihre Auswahl getroffen haben, führt azd
den Bereitstellungs- und Bereitstellungsprozess aus.
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.
Der azd up
-Befehl fungiert als Wrapper für die einzelnen, folgenden azd
-Befehle, um Ihre Ressourcen in einem einzigen Schritt bereitzustellen und zu implementieren.
-
azd package
: Die App-Projekte und deren Abhängigkeiten werden in Container verpackt. -
azd provision
: Die Azure Ressourcen, die die App benötigt, werden bereitgestellt. -
azd deploy
: Die Projekte werden als Container in eine Azure Containerregistrierungsinstanz übertragen und dann verwendet, um neue Überarbeitungen von Azure Container Apps zu erstellen, in denen der Code gehostet wird.
Wenn die azd up
Stufen abgeschlossen sind, ist Ihre App auf Azureverfügbar, und Sie können das Azure Portal öffnen, um die Ressourcen aufzurufen.
azd
gibt auch URLs aus, um direkt auf die bereitgestellten Apps zuzugreifen.
Testen der bereitgestellten App
Nachdem die App eingerichtet und bereitgestellt wurde, können Sie zum Azure Portal wechseln. In der Ressourcengruppe, in der Sie die App bereitgestellt haben, werden die drei Container-Apps und andere Ressourcen angezeigt.
Klicken Sie auf die web
Container-App, um sie im Portal zu öffnen.
Klicken Sie auf den Link der Anwendungs-URL, um das Frontend im Browser zu öffnen.
Wenn Sie in der Navigationsleiste auf den Knoten "Wetter" klicken, ruft die Frontend-Container-App web
die Container-App apiservice
auf, um Daten abzurufen. Die Ausgabe des Front-Ends wird mithilfe der redis
Container-App und der Integration der .NET AspireRedis Ausgabezwischenspeicherungzwischengespeichert. Wenn Sie das Front-End ein paar Mal aktualisieren, werden Sie feststellen, dass die Wetterdaten zwischengespeichert werden. Sie wird nach ein paar Sekunden aktualisiert.
Bereitstellen des .NET.NET Aspire-Dashboards
Sie können das .NET.NET Aspire-Dashboard als Teil Ihrer gehosteten App bereitstellen. Dieses Feature wird jetzt vollständig unterstützt. Bei der Bereitstellung geben die azd-Ausgabeprotokolle eine zusätzliche URL für das bereitgestellte Dashboard aus.
Sie können azd monitor
ausführen, um das Dashboard automatisch zu starten.
azd monitor
Bereinigen von Ressourcen
Führen Sie den folgenden Azure CLI-Befehl aus, um die Ressourcengruppe zu löschen, wenn Sie die von Ihnen erstellten Azure Ressourcen nicht mehr benötigen. Durch das Löschen der Ressourcengruppe werden auch die darin enthaltenen Ressourcen gelöscht.
az group delete --name <your-resource-group-name>
Weitere Informationen finden Sie unter Ressourcen bereinigen in Azure.