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.
Den här snabbstarten speglar de program som du distribuerar i snabbstarten Dapr Hello World med öppen källkod.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration krävs. Om du inte redan har ett konto kan du skapa ett konto kostnadsfritt.
- Ett GitHub-konto. Om du inte redan har en kan du registrera dig kostnadsfritt.
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åndetnodeapp
. - Dapr-aktiverad, huvudlös
pythonapp
som anroparnodeapp
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.
Öppna Azure-portalen i webbläsaren.
Gå till det nyligen skapade lagringskontot i resursgruppen.
Välj Datalagringscontainrar> på menyn till vänster.
Välj den skapade containern.
Kontrollera att du kan se filen med namnet
order
i containern.Välj filen.
Välj fliken Redigera .
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.