Dela via


Snabbstart: Distribuera ett Dapr-program till Azure Container Apps med en Azure Resource Manager- eller Bicep-mall

Dapr (Distributed Application Runtime) hjälper utvecklare att skapa motståndskraftiga och tillförlitliga mikrotjänster. I den här snabbstarten gör du det möjligt för Dapr-sidovagnar att köras tillsammans med två containerappar som producerar och använder meddelanden som lagras i ett Azure Blob Storage-tillståndslager. Med antingen Azure Resource Manager- eller Bicep-mallar gör du följande:

  • Skicka Azure CLI-kommandon för att distribuera en mall som startar allt du behöver för att köra mikrotjänster.
  • Kontrollera interaktionen mellan de två mikrotjänsterna i Azure Portal.

Arkitekturdiagram för Dapr Hello World-mikrotjänster i Azure Container Apps

Den här snabbstarten speglar de program som du distribuerar i snabbstarten Dapr Hello World med öppen källkod.

Förutsättningar

Ställ in

Om du vill logga in på Azure från CLI kör du följande kommando och följer anvisningarna för att slutföra autentiseringsprocessen.

az login

Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.

az upgrade

Installera eller uppdatera sedan Azure Container Apps-tillägget för CLI.

Om du får fel om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller cmdletar från modulen Az.App i Azure PowerShell kontrollerar du att den senaste versionen av Azure Container Apps-tillägget är installerad.

az extension add --name containerapp --upgrade

Kommentar

Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true.

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

Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App namnrymderna och Microsoft.OperationalInsights .

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

Ange miljövariabler

Ange följande miljövariabler. <PLACEHOLDERS> Ersätt med dina värden:

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

Skapa en Azure-resursgrupp

Skapa en resursgrupp för att organisera de tjänster som är relaterade till distributionen av containerappen.

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

Förbereda GitHub-lagringsplatsen

Gå till lagringsplatsen med ARM- och Bicep-mallarna som används för att distribuera lösningen.

Välj knappen Förgrening överst på lagringsplatsen för att förgrena lagringsplatsen till ditt konto.

Nu kan du klona din förgrening för att arbeta med den lokalt.

Använd följande git-kommando för att klona din förgrenade lagringsplats till katalogen acadapr-templates .

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

Distribuera

Gå till katalogen acadapr-templates och kör följande kommando:

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

En varning (BCP081) kan visas. Den här varningen påverkar inte distributionen av programmet.

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

Det här kommandot distribuerar:

  • Container Apps-miljön och den associerade Log Analytics-arbetsytan för att vara värd för Hello World Dapr-lösningen.
  • En Application Insights-instans för Dapr-distribuerad spårning.
  • Appservern nodeapp som körs på targetPort: 3000 med Dapr aktiverad och konfigurerad med:
    • "appId": "nodeapp"
    • "appPort": 3000
    • En användartilldelad identitet med åtkomst till Azure Blob Storage via en rolltilldelning för Lagringsdatadeltagare
  • En Dapr-komponent med "type": "state.azure.blobstorage" omfång som ska användas av för lagringstillståndet nodeapp .
  • Dapr-aktiverad, huvudlös pythonapp som anropar nodeapp tjänsten med hjälp av Dapr-tjänstanrop.
  • En Microsoft Entra ID-rolltilldelning för Node.js-appen som används av Dapr-komponenten för att upprätta en anslutning till Blob Storage.

Verifiera resultatet

Bekräfta lyckad tillståndsbeständighet

Du kan bekräfta att tjänsterna fungerar korrekt genom att visa data i ditt Azure Storage-konto.

  1. Öppna Azure-portalen i webbläsaren.

  2. Gå till det nyligen skapade lagringskontot i resursgruppen.

  3. Välj Datalagringscontainrar> på menyn till vänster.

  4. Välj den skapade containern.

  5. Kontrollera att du kan se filen med namnet order i containern.

  6. Välj filen.

  7. Välj fliken Redigera .

  8. Välj knappen Uppdatera för att observera uppdateringar.

Visa loggfiler

Loggar från containerappar lagras i den ContainerAppConsoleLogs_CL anpassade tabellen på Log Analytics-arbetsytan. Du kan visa loggar via Azure Portal eller via CLI. Det kan till en början uppstå en liten fördröjning för tabellen som ska visas på arbetsytan.

Använd följande kommando för att visa loggar i bash eller PowerShell.

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

Följande utdata visar vilken typ av svar som ska förväntas av kommandot.

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

Rensa resurser

Eftersom pythonapp kontinuerligt anropar nodeapp med meddelanden som sparas i ditt konfigurerade tillståndsarkiv är det viktigt att slutföra de här rensningsstegen för att undvika pågående fakturerbara åtgärder.

Om du vill ta bort de resurser som skapats som en del av den här genomgången kör du följande kommando.

az group delete \
  --resource-group $RESOURCE_GROUP

Dricks

Har du problem? Meddela oss på GitHub genom att öppna ett problem i Azure Container Apps-lagringsplatsen.

Nästa steg