Freigeben über


Lernprogramm: Bereitstellen eines Aspire Projekts mithilfe des Azure Developer CLI

Mit dem Azure Developer CLI (azd) können Sie Aspire Projekte mithilfe GitHub Aktionen oder Azure Devops-Pipelines bereitstellen, indem Sie die erforderlichen Authentifizierungs- und Umgebungseinstellungen automatisch konfigurieren. Dieser Artikel führt Sie durch den Prozess des Erstellens und Bereitstellens eines Aspire-Projekts auf Azure Container Apps unter Verwendung von azd. Sie lernen die folgenden Konzepte kennen:

  • Erfahren Sie, wie azd die Integration mit Aspire Projekten funktioniert
  • Erstellen und konfigurieren eines GitHub oder Azure DevOps-Repositorys für ein Aspire Projekt mithilfe von azd
  • Überwachen und Ermitteln von GitHub Actions-Workflow- oder Azure DevOps-Pipeline-Ausführungen und Azure-Bereitstellungen

Voraussetzungen

Um mit Aspire zu arbeiten, müssen Sie Folgendes lokal installiert haben:

Weitere Informationen finden Sie unter Aspire Setup und Tooling und Aspire SDK.

Sie müssen auch Azure Developer CLIlokal installiert (Version 1.5.1 oder höher) haben. Zu den allgemeinen Installationsoptionen gehören die folgenden:

winget install microsoft.azd

Erstellen einer Aspire Lösung

Als Ausgangspunkt geht in diesem Artikel davon aus, dass Sie eine Aspire Lösung aus der Aspire Vorlage "Startanwendung " erstellt haben. Weitere Informationen finden Sie in der Schnellstartanleitung: Erstellen Ihrer ersten Aspire App.

Initialisieren der Vorlage

  1. Öffnen Sie ein neues Terminalfenster und navigieren Sie zu dem Verzeichnis Ihrer cd-Lösung.

  2. Führen Sie den befehl azd init aus, um Ihr Projekt mit azdzu initialisieren, wodurch die lokale Verzeichnisstruktur überprüft und der App-Typ bestimmt wird.

    azd init
    

    Weitere Informationen zum azd init-Befehl finden Sie unter azd init.

  3. Wählen Sie "Code im aktuellen Verzeichnis verwenden" aus, wenn azd Ihnen drei Optionen zur App-Initialisierung angeboten werden.

    ? How do you want to initialize your app?  [Use arrows to move, type to filter]
    > Use code in the current directory
      Select a template
      Create a minimal project
    
  4. Nach dem Scannen des Verzeichnisses werden Sie aufgefordert, zu bestätigen, azd dass es das richtige AspireAppHost-Projekt gefunden hat. Wählen Sie die Option Bestätigen und mit der Initialisierung meiner App fortfahren.

    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. Geben Sie einen Umgebungsnamen ein, der verwendet wird, um bereitgestellte Ressourcen in Azure zu benennen und verschiedene Umgebungen wie dev und prodzu 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. 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 Überschreibungen.

Erstellen Sie das GitHub Repository und die Pipeline.

Mit Azure Developer CLI können Sie automatisch CI/CD-Pipelines mit den richtigen Konfigurationen und Berechtigungen erstellen, um Ressourcen für Azure bereitzustellen und zu verteilen. azd kann auch ein GitHub-Repository für Ihre App erstellen, falls es noch nicht existiert.

  1. Führen Sie den Befehl azd pipeline config aus, um Die Bereitstellungspipeline zu konfigurieren und sicher mit Azurezu verbinden:

    azd pipeline config
    
  2. Wählen Sie das Abonnement aus, in dem die Ressourcen der App bereitgestellt werden sollen.

  3. Wählen Sie den Azure Speicherort aus, der für die Ressourcen verwendet werden soll.

  4. Wenn Sie gefragt werden, ob Sie ein neues Git-Repository im Verzeichnis erstellen möchten, geben Sie y ein und drücken Eingabe.

    Hinweis

    Zum Erstellen eines GitHub Repositorys mussten Sie bei GitHubangemeldet sein. Es gibt einige Auswahlmöglichkeiten, die je nach Ihren Vorlieben variieren. Nach der Anmeldung werden Sie aufgefordert, ein neues Repository im aktuellen Verzeichnis zu erstellen.

  5. Wählen Sie Erstellen eines neuen privaten GitHub Repositorys aus, um die Git-Remote zu konfigurieren.

  6. Geben Sie einen Namen Ihrer Wahl für das neue GitHub Repository ein, oder drücken Sie die EINGABETASTE, um den Standardnamen zu verwenden. azd erstellt ein neues Repository in GitHub und konfiguriert es mit den erforderlichen Geheimschlüsseln, die für die Authentifizierung bei Azureerforderlich sind.

    Ein Screenshot mit den Pipelinekonfigurationsschritten.

  7. Geben Sie und ein, um fortzufahren, wenn azd Sie auffordert, einen Commit auszuführen und Ihre lokalen Änderungen zu übertragen, um die konfigurierte Pipeline zu starten.

Entdecken des GitHub-Aktions-Workflows und der Bereitstellung

  1. Navigieren Sie mittels des Links, den GitHubausgibt, zu Ihrem neuen azd-Repository.

  2. Wählen Sie die Registerkarte Aktionen, um die Workflows für das Repository zu sehen. Sie sollten sehen, dass der neue Workflow entweder ausgeführt wird oder bereits abgeschlossen ist. Wählen Sie den Workflow aus, um die Schritte des Jobs und die Details in den Protokollen des ausgeführten Vorgangs zu sehen. Sie können beispielsweise Die Schritte wie " Anwendung bereitstellen" erweitern, um die Details der abgeschlossenen Aktion anzuzeigen.

    GitHub-Aktions-Workflows.

  3. Wählen Sie Anwendungsbereitstellung aus, um die Protokolle für diesen Schritt zu erweitern. Sie sollten zwei Endpunkt-URLs für die apiservice und webfrontend sehen. Wählen Sie einen dieser Links, um sie in einer anderen Registerkarte des Browsers zu öffnen und die bereitgestellte Anwendung zu entdecken.

    Screenshot mit den bereitgestellten App-Links.

Glückwunsch! Sie haben ein Aspire Projekt mit den Azure Developer CLI und GitHub Aktionen erfolgreich bereitgestellt.

Konfigurieren des Arbeitsverzeichnisses für Multi-Projekt-Lösungen

Wenn Sie GitHubAktionen zu einer vorhandenen AspireProjektmappe mit mehreren Projekten hinzufügen, bei denen sich das AppHost-Projekt nicht im Stammverzeichnis befindet, müssen Sie den working-directoryParameter möglicherweise für bestimmte Workflow-Schritte konfigurieren. In diesem Abschnitt wird erläutert, wann und wie Diese Anpassungen vorgenommen werden.

Wenn die Arbeitsverzeichniskonfiguration erforderlich ist

Der azd pipeline config Befehl generiert einen GitHub Actions-Workflow, der davon ausgeht, dass sich Ihr Aspire AppHost-Projekt im Stammverzeichnis Ihres Repositorys befindet. In vielen realen Szenarien, insbesondere beim Hinzufügen zu Aspire vorhandenen Anwendungen, befindet sich das AppHost-Projekt möglicherweise in einem Unterverzeichnis.

Wenn Ihre Repositorystruktur z. B. wie folgt aussieht:

└───📂 MyAspireApp
    ├───📂 MyAspireApp.ApiService
    ├───📂 MyAspireApp.AppHost
    │    ├─── MyAspireApp.AppHost.csproj
    │    └─── AppHost.cs
    ├───📂 MyAspireApp.Web
    └─── MyAspireApp.sln

Die generierten Workflowschritte für die Bereitstellungsinfrastruktur und die Bereitstellungsanwendung müssen aus dem MyAspireApp.AppHost Verzeichnis und nicht aus dem Repositorystamm ausgeführt werden.

Aktualisieren des GitHub Aktions-Workflows

Überprüfen Sie nach der Ausführung azd pipeline configdie generierte Workflowdatei in .github/workflows/azure-dev.yml. Suchen Sie nach Schritten zum Ausführen von azd Befehlen, und fügen Sie den working-directory Parameter nach Bedarf hinzu.

Hier ist ein Beispiel für die ursprünglich generierten Schritte:

- name: Provision Infrastructure
  run: azd provision --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Aktualisieren Sie die folgenden Schritte, um den Parameter einzuschließen working-directory :

- name: Provision Infrastructure
  run: azd provision --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

- name: Deploy Application
  run: azd deploy --no-prompt
  working-directory: ./MyAspireApp.AppHost
  env:
    AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
    AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
    AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}

Suchen des richtigen Arbeitsverzeichnisses

Das Arbeitsverzeichnis sollte auf den Ordner verweisen, der Ihr Aspire AppHost-Projekt enthält (das Projekt, das die von azd init generierte Datei enthält). Sie können dieses Verzeichnis anhand der folgenden Aktionen identifizieren:

  1. Suchen Sie nach dem Projekt mit dem Paketverweis in der Aspire.AppHost.csproj Datei.
  2. Suchen Sie das Verzeichnis, das die Datei "azure.yaml " enthält.
  3. Suchen Sie das Projekt, auf das in Ihrer Lösung verwiesen wird, das andere Dienste koordiniert.

Hinweis

Einige azd Befehle, wie z. B. azd init während der Einrichtung der Pipeline, benötigen möglicherweise auch den Parameter working-directory, wenn sie nicht aus dem AppHost-Projektverzeichnis ausgeführt werden.

Erstellen Sie das Azure DevOps-Repository und die Pipeline

Von Bedeutung

Wie in den Voraussetzungen erwähnt, müssen Sie eine Azure-DevOps Organisation erstellen oder eine bestehende Organisation auswählen, um die nächsten Schritte abzuschließen. Außerdem müssen Sie ein persönliches Zugriffstoken (PAT) mit den in den Voraussetzungen aufgeführten Berechtigungen erstellen.

Mit Azure Developer CLI können Sie automatisch Pipelines mit den richtigen Konfigurationen und Berechtigungen erstellen, um Ressourcen für Azure bereitzustellen und zu verteilen. azd kann auch ein Azure Pipelines-Repository für Ihre App erstellen, sofern es noch nicht vorhanden ist.

  1. Führen Sie den Befehl azd pipeline config aus, um die Bereitstellungspipeline zu konfigurieren und sie sicher mit Azurezu verbinden. Fügen Sie die Option --provider azdo ein, um Azure-Pipelines anstelle der Standardkonfiguration GitHub-Aktionen zu verwenden.

    azd pipeline config --provider azdo
    

    Von Bedeutung

    Stellen Sie vor dem Ausführen von azd pipeline config sicher, dass Sie azd init erfolgreich ausgeführt haben, um Ihr Projekt zu initialisieren. Wenn während der Pipelineausführung Fehler wie "Kein Projekt vorhanden" auftreten, sehen Sie im Abschnitt zur Problembehandlung nach Lösungen.

  2. Wählen Sie das Abonnement aus, in dem die Ressourcen der App bereitgestellt werden sollen.

  3. Wählen Sie den Azure Speicherort aus, der für die Ressourcen verwendet werden soll.

  4. Fügen Sie das zuvor erstellte persönliche Zugriffstoken ein.

  5. Geben Sie den namen der Azure DevOps-Organisation ein, den Sie erstellt oder ausgewählt haben.

  6. Wenn Sie aufgefordert werden, ein neues Repository im aktuellen Verzeichnis zu erstellen, geben Sie y ein und drücken Sie Eingabe.

  7. Wenn Sie aufgefordert werden, die Git-Remote zu konfigurieren, wählen Sie Erstellen eines neuen Azure DevOps-Projektsaus.

  8. Geben Sie einen eindeutigen Namen Ihrer Wahl für das neue Repository ein, z. B. aspireazd. azd erstellt ein neues Repository in Azure Repos und konfiguriert es mit den erforderlichen geheimen Schlüsseln, die für die Authentifizierung bei Azureerforderlich sind.

    Ein Screenshot mit den Pipelinekonfigurationsschritten.

  9. Geben Sie und ein, um fortzufahren, wenn azd Sie auffordert, einen Commit auszuführen und Ihre lokalen Änderungen zu übertragen, um die konfigurierte Pipeline zu starten.

Entdecken der Pipeline und der bereitgestellte App

  1. Navigieren Sie zu Ihrer neuen Azure-Pipeline über den von azd ausgegebenen Link zum Status.

    Ein Screenshot zeigt, dass die Azure-Pipelines erfolgreich ausgeführt wurden.

  2. Wählen Sie die ausgeführte Pipeline aus, um die Zusammenfassung anzuzeigen.

    Ein Screenshot zeigt die Zusammenfassung der ausgeführten Azure-Pipelines.

  3. Wählen Sie den Joblink am unteren Rand der Ansicht aus, um zu den Jobdetails zu gelangen.

    Ein Screenshot zeigt die Detailansicht des Ausführens von Azure-Pipelines.

  4. Auf der Seite "Auftragsdetails" wird der Status aller einzelnen Phasen angezeigt. Wählen Sie Infrastruktur bereitstellen, um die Protokolle für diese Phase anzuzeigen, in denen alle von azd abgeschlossenen Schritte der Bereitstellung aufgeführt sind. Beachten Sie unten in den Protokollen die abschließende Nachricht über den Status und den Link zu der bereitgestellten Azure-Ressourcengruppe.

  5. Wählen Sie den Link unten in den Bereitstellungsausgabeprotokollen aus, um zur neuen Azure Ressourcengruppe zu navigieren.

    Ein Screenshot mit den bereitgestellten Azure Ressourcen.

    Hinweis

    Sie können auch direkt zu Ihrer neuen Ressourcengruppe navigieren, indem Sie im Azure Portal danach suchen. Der Name Ihrer Ressourcengruppe ist der Name der Umgebung, die Sie azd mit dem Präfix rg- angegeben haben.

  6. Wählen Sie die webfrontend Container-App aus, die den öffentlich zugänglichen Teil Ihrer Website hosten soll.

  7. Wählen Sie auf der webfrontend Detailseite den Link Anwendungs-URL aus, um Ihre Website im Browser zu öffnen.

Von Bedeutung

Wenn beim Anzeigen Ihrer Website im Browser ein 403 Forbidden-Fehler auftritt, stellen Sie sicher, dass die Ingress-Einstellungen ordnungsgemäß konfiguriert sind. Navigieren Sie auf der webfrontend App-Seite im Azure Portal zu Ingress auf der linken Navigationsleiste. Vergewissern Sie sich, dass Ingress-Datenverkehr auf Annahme von Datenverkehr von überall festgelegt ist und speichern Sie Ihre Änderungen.

Glückwunsch! Sie haben erfolgreich ein Aspire-Projekt mit den Azure Developer CLI- und Azure-Pipelines bereitgestellt.

Fehlerbehebung Azure DevOps-Pipeline Bereitstellung

In diesem Abschnitt werden häufig auftretende Probleme behandelt, die beim Bereitstellen von Aspire Projekten mithilfe von Azure DevOps-Pipelines auftreten können.

FEHLER: Es ist kein Projekt vorhanden; um ein neues Projekt zu erstellen, führen Sie azd init aus

Problem: Während des Bereitstellungsschritts Ihrer Azure DevOps-Pipeline tritt die Fehlermeldung auf:

ERROR: no project exists; to create a new project, run azd init

Ursache: Dieser Fehler tritt auf, da der azd init Befehl Dateien (azure.yaml und den Ordner) generiert, die .azure in der Regel nicht an Ihr Repository gebunden sind. Wenn die Pipeline in einer sauberen Umgebung ausgeführt wird, sind diese Dateien nicht vorhanden, wodurch azd Befehle fehlschlagen.

Lösung: Es gibt mehrere Ansätze, um dieses Problem zu beheben:

Fügen Sie Ihrer azd init DevOps-Pipeline vor dem Bereitstellungsschritt einen Azure Schritt hinzu. Sie können die --from-code- und --no-prompt-Flags verwenden, um den Befehl nicht interaktiv auszuführen.

- task: AzureCLI@2
  displayName: 'Initialize Azure Developer CLI'
  inputs:
    azureSubscription: '$(AZURE_SERVICE_CONNECTION)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      azd init --from-code --no-prompt
      azd env new $(AZURE_ENV_NAME) --location $(AZURE_LOCATION) --subscription $(AZURE_SUBSCRIPTION_ID)

Hinweis

Wenn Sie auch bei Aufforderungen mit --no-prompt auf Probleme stoßen, versuchen Sie, azd init und azd env new als separate Schritte auszuführen, oder verwenden Sie Umgebungsvariablen, um Antworten auf irgendwelche Eingabeaufforderungen bereitzustellen. Das --from-code Flag weist azd an, den vorhandenen Code im aktuellen Verzeichnis zu verwenden, anstatt ein neues Projekt aus einer Vorlage zu erstellen.

Stellen Sie sicher, dass Sie die folgenden Variablen in Ihrer Pipeline definieren:

  • AZURE_ENV_NAME: Ihr Umgebungsname (z. B dev . oder prod).
  • AZURE_LOCATION: Ihre Azure Region (z. B eastus2. ).
  • AZURE_SUBSCRIPTION_ID: Ihre Azure Abonnement-ID.

Option 2: Committen Sie die erforderlichen Dateien in Ihr Repository

Wenn Sie die generierten Dateien lieber in Ihr Repository übernehmen möchten:

  1. Führen Sie azd init lokal in Ihrem Projektverzeichnis aus.
  2. Fügen Sie die generierte azure.yaml Datei zu Ihrem Repository hinzu.
  3. Fügen Sie optional den .azure Ordner zu Ihrem Repository hinzu, wenn Sie umgebungsspezifische Einstellungen beibehalten möchten.

Hinweis

Der .azure Ordner enthält eine umgebungsspezifische Konfiguration, die vertrauliche Informationen enthalten kann. Überprüfen Sie die Inhalte sorgfältig, bevor Sie sich für Ihr Repository verpflichten.

Option 3: Verwenden der azd-Pipeline-Konfiguration mit korrekter Initialisierung

Stellen Sie sicher, dass Sie azd pipeline config --provider azdo ausführen, nachdem Sie azd init lokal erfolgreich ausgeführt haben. Dieser Befehl sollte die Pipeline mit der richtigen Konfiguration einrichten, die die Initialisierung automatisch behandelt.

Wenn weiterhin Probleme auftreten, überprüfen Sie Folgendes:

  • Die Projektstruktur stimmt mit den azd Erwartungen für Aspire Projekte überein.
  • Sie führen die Befehle aus dem richtigen Verzeichnis aus (normalerweise wo sich Ihre .sln Datei befindet).
  • Ihre Azure DevOps-Dienstverbindung verfügt über die erforderlichen Berechtigungen für die Bereitstellung von Ressourcen.

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.