Freigeben über


Schnellstart: Bereitstellen einer Dapr-Anwendung in Azure Container Apps mithilfe einer Azure Resource Manager- oder Bicep-Vorlage

Dapr (Distributed Application Runtime) hilft Entwicklern, resiliente, zuverlässige Microservices zu erstellen. In dieser Schnellstartanleitung können Sie Dapr-Sidecars zusammen mit zwei Container-Apps ausführen, die Nachrichten erzeugen und nutzen, die in einem Azure Blob Storage-Zustandsspeicher gespeichert sind. Mit Azure Resource Manager- oder Bicep-Vorlagen führen Sie folgende Aktionen aus:

  • Übergeben von Azure CLI-Befehlen, um eine Vorlage bereitzustellen, die alle Komponenten startet, die Sie zum Ausführen von Microservices benötigen
  • Überprüfen der Interaktion zwischen den beiden Microservices im Azure-Portal

Architekturdiagramm für Dapr Hallo Welt-Microservices in Azure Container Apps

In dieser Schnellstartanleitung werden die Anwendungen gespiegelt, die Sie im Open-Source-Schnellstart Hallo Welt für Dapr bereitstellen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement ist erforderlich. Falls Sie noch über keins verfügen, können Sie ein kostenloses Konto erstellen.
  • Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.

Setup

Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.

az login

Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.

az upgrade

Installieren oder aktualisieren Sie als Nächstes die Azure Container Apps-Erweiterung für die CLI.

Falls Sie Fehler aufgrund fehlender Parameter erhalten, wenn Sie az containerapp-Befehle in der Azure CLI oder Cmdlets aus dem Az.App-Modul in Azure PowerShell ausführen, stellen Sie sicher, dass die aktuelle Version der Azure Container Apps-Erweiterung installiert ist.

az extension add --name containerapp --upgrade

Hinweis

Ab Mai 2024 aktivieren Azure CLI-Erweiterungen standardmäßig keine Previewfunktionen mehr. Um auf Previewfunktionen von Container Apps zuzugreifen, installieren Sie die Container Apps-Erweiterung mit --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App und Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Festlegen von Umgebungsvariablen

Legen Sie die folgenden Umgebungsvariablen fest. Ersetzen Sie <PLACEHOLDERS> durch Ihre eigenen Werte:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

Erstellen einer Azure-Ressourcengruppe

Erstellen Sie eine Ressourcengruppe, um die Dienste im Zusammenhang mit der Bereitstellung Ihrer Container-App zu organisieren.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Klonen Sie das GitHub-Repository

Wechseln Sie zu dem Repository, das die ARM- und Bicep-Vorlagen enthält, das zum Bereitstellen der Lösung verwendet wird.

Wählen Sie oben im Repository die Schaltfläche Forken aus, um das Repository in Ihr Konto zu forken.

Jetzt können Sie Ihren Fork klonen, um mit diesem lokal zu arbeiten.

Verwenden Sie den folgenden git-Befehl, um Ihr geforktes Repository in das Verzeichnis acadapr-templates zu klonen.

git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates

Bereitstellen

Navigieren Sie zum Verzeichnis acadapr-templates, und führen Sie den folgenden Befehl aus:

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.json \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

Möglicherweise wird eine Warnung (BCP081) angezeigt. Diese Warnung hat keine Auswirkungen auf die erfolgreiche Bereitstellung der Anwendung.

az deployment group create \
  --resource-group "$RESOURCE_GROUP" \
  --template-file ./azuredeploy.bicep \
  --parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"

Mit diesem Befehl wird Folgendes bereitgestellt:

  • Die Container Apps-Umgebung und der zugehörige Log Analytics-Arbeitsbereich zum Hosten der Dapr-Lösung „Hallo Welt“
  • Eine Application Insights-Instanz für die verteilte Dapr-Ablaufverfolgung
  • Der App-Server nodeapp, auf dem targetPort: 3000 ausgeführt wird, wobei Dapr aktiviert und mit folgenden Elementen konfiguriert ist:
    • "appId": "nodeapp"
    • "appPort": 3000
    • Eine benutzerseitig zugewiesene Identität mit Zugriff auf den Azure Blob-Speicher über eine Rollenzuweisung vom Typ eine „Mitwirkender an Speicherdaten“
  • Die Dapr-Komponente "type": "state.azure.blobstorage", die auf die Verwendung durch nodeapp zum Speichern des Zustands ausgelegt ist
  • Die Dapr-fähige monitorlose Python-App (pythonapp), die den nodeapp-Dienst mithilfe des Dapr-Dienstaufrufs aufruft
  • Eine Microsoft Entra ID-Rollenzuweisung für die Node.js-App, die von der Dapr-Komponente verwendet wird, um eine Verbindung mit dem Blobspeicher herzustellen

Überprüfen des Ergebnisses

Bestätigen der erfolgreichen Zustandspersistenz

Sie können überprüfen, ob die Dienste ordnungsgemäß funktionieren, indem Sie Daten in Ihrem Azure-Speicherkonto anzeigen.

  1. Öffnen Sie das Azure-Portal in Ihrem Browser.

  2. Wechseln Sie zu dem neu erstellten Speicherkonto in Ihrer Ressourcengruppe.

  3. Wählen Sie im Menü auf der linken Seite Datenspeicher>Container aus.

  4. Wählen Sie den erstellten Container aus.

  5. Vergewissern Sie sich, dass die Datei mit dem Namen order im Container angezeigt wird.

  6. Wählen Sie die Datei aus.

  7. Wählen Sie die Registerkarte Bearbeiten aus.

  8. Wählen Sie die Schaltfläche Aktualisieren aus, um Updates zu sehen.

Protokolle anzeigen

Protokolle aus Container-Apps werden in der benutzerdefinierten Tabelle ContainerAppConsoleLogs_CL im Log Analytics-Arbeitsbereich gespeichert. Sie können Protokolle über das Azure-Portal oder mithilfe der CLI anzeigen. Möglicherweise kommt es bei der Anzeige der Tabelle im Arbeitsbereich anfangs zu einer kleinen Verzögerung.

Verwenden Sie den folgenden Befehl, um Protokolle in Bash oder PowerShell anzeigen zu können.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
  --workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
  --out table

Die folgende Ausgabe veranschaulicht den Typ der Antwort, die vom Befehl erwartet wird.

ContainerAppName_s    Log_s                            TableName      TimeGenerated
--------------------  -------------------------------  -------------  ------------------------
nodeapp               Got a new order! Order ID: 61    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T21:31:46.184Z
nodeapp               Got a new order! Order ID: 62    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Successfully persisted state.    PrimaryResult  2021-10-22T22:01:57.174Z
nodeapp               Got a new order! Order ID: 63    PrimaryResult  2021-10-22T22:45:44.618Z

Bereinigen von Ressourcen

Da pythonapp kontinuierlich Aufrufe von nodeapp mit Nachrichten vornimmt, die in Ihrem konfigurierten Zustandsspeicher gespeichert werden, ist es wichtig, diese Bereinigungsschritte auszuführen, um laufende abrechenbare Vorgänge zu vermeiden.

Wenn Sie die im Rahmen dieser exemplarischen Vorgehensweise erstellten Ressourcen löschen möchten, führen Sie den folgenden Befehl aus.

az group delete \
  --resource-group $RESOURCE_GROUP

Tipp

Treten Probleme auf? Informieren Sie uns über GitHub, indem Sie ein Problem im Azure Container Apps-Repository öffnen.

Nächste Schritte