Quickstart: Een Dapr-toepassing implementeren in Azure Container Apps met een Azure Resource Manager- of Bicep-sjabloon
Dapr (Distributed Application Runtime) helpt ontwikkelaars bij het bouwen van tolerante, betrouwbare microservices. In deze quickstart schakelt u Dapr-sidecars in naast twee container-apps die berichten produceren en gebruiken, die zijn opgeslagen in een Azure Blob Storage-statusarchief. Met behulp van Azure Resource Manager- of Bicep-sjablonen gaat u het volgende doen:
- Geef Azure CLI-opdrachten door om een sjabloon te implementeren waarmee alles wordt gestart wat u nodig hebt om microservices uit te voeren.
- Controleer de interactie tussen de twee microservices in Azure Portal.
Deze quickstart weerspiegelt de toepassingen die u implementeert in de opensource Dapr Hallo wereld quickstart.
Vereisten
- Azure CLI installeren
- Installeer Git
- Er is een Azure-account met een actief abonnement vereist. Als u dat nog niet hebt, kunt u gratis een account maken.
- Een GitHub-account. Als u er nog geen hebt, kunt u zich gratis registreren.
Instellingen
Als u zich wilt aanmelden bij Azure vanuit de CLI, voert u de volgende opdracht uit en volgt u de aanwijzingen om het verificatieproces te voltooien.
az login
Voer de upgradeopdracht uit om ervoor te zorgen dat u de nieuwste versie van de CLI uitvoert.
az upgrade
Installeer of werk vervolgens de Azure Container Apps-extensie voor de CLI bij.
Als u fouten ontvangt over ontbrekende parameters wanneer u opdrachten uitvoert az containerapp
in Azure CLI of cmdlets vanuit de Az.App
module in Azure PowerShell, moet u ervoor zorgen dat de nieuwste versie van de Azure Container Apps-extensie is geïnstalleerd.
az extension add --name containerapp --upgrade
Notitie
Vanaf mei 2024 schakelen Azure CLI-extensies standaard geen preview-functies meer in. Als u toegang wilt krijgen tot de preview-functies van Container Apps, installeert u de Container Apps-extensie met --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Nu de huidige extensie of module is geïnstalleerd, registreert u de Microsoft.App
en Microsoft.OperationalInsights
naamruimten.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Omgevingsvariabelen instellen
Stel de volgende omgevingsvariabelen in. Vervang de <PLACEHOLDERS>
waarden door uw waarden:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Maak een Azure-resourcegroep
Maak een resourcegroep om de services te ordenen die betrekking hebben op de implementatie van uw container-app.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
De GitHub-opslagplaats voorbereiden
Ga naar de opslagplaats met de ARM- en Bicep-sjablonen die worden gebruikt om de oplossing te implementeren.
Selecteer de knop Fork boven aan de opslagplaats om de opslagplaats te splitsen in uw account.
U kunt nu uw fork klonen om er lokaal mee te werken.
Gebruik de volgende Git-opdracht om uw geforkte opslagplaats te klonen in de map acadapr-templates .
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
Implementeren
Navigeer naar de map acadapr-templates en voer de volgende opdracht uit:
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Er kan een waarschuwing (BCP081) worden weergegeven. Deze waarschuwing heeft geen invloed op de geslaagde implementatie van de toepassing.
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Met deze opdracht wordt het volgende geïmplementeerd:
- De Container Apps-omgeving en de bijbehorende Log Analytics-werkruimte voor het hosten van de Hello World Dapr-oplossing.
- Een Application Insights-exemplaar voor gedistribueerde Dapr-tracering.
- De
nodeapp
app-server die wordt uitgevoerdtargetPort: 3000
met Dapr ingeschakeld en geconfigureerd met behulp van:"appId": "nodeapp"
"appPort": 3000
- Een door de gebruiker toegewezen identiteit met toegang tot de Azure Blob-opslag via een roltoewijzing inzender voor opslaggegevens
- Een Dapr-onderdeel van
"type": "state.azure.blobstorage"
het bereik voor gebruik door denodeapp
status opslaan. - De dapr ingeschakeld, headless
pythonapp
die denodeapp
service aanroept met behulp van aanroepen van de Dapr-service. - Een Microsoft Entra ID-roltoewijzing voor de Node.js-app die door het Dapr-onderdeel wordt gebruikt om een verbinding met Blob Storage tot stand te brengen.
Het resultaat controleren
Persistentie van geslaagde status bevestigen
U kunt controleren of de services correct werken door gegevens in uw Azure Storage-account weer te geven.
Open Azure Portal in uw browser.
Ga naar het zojuist gemaakte opslagaccount in uw resourcegroep.
Selecteer Data Storage>Containers in het menu aan de linkerkant.
Selecteer de gemaakte container.
Controleer of u het bestand met de naam
order
in de container kunt zien.Selecteer het bestand.
Selecteer het tabblad Bewerken .
Selecteer de knop Vernieuwen om updates te bekijken.
Logboeken bekijken
Logboeken van container-apps worden opgeslagen in de ContainerAppConsoleLogs_CL
aangepaste tabel in de Log Analytics-werkruimte. U kunt logboeken bekijken via Azure Portal of via de CLI. Er kan in eerste instantie een kleine vertraging optreden voordat de tabel in de werkruimte wordt weergegeven.
Gebruik de volgende opdracht om logboeken in bash of PowerShell weer te geven.
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
In de volgende uitvoer ziet u het type antwoord dat u kunt verwachten van de opdracht.
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
Resources opschonen
Omdat pythonapp
u continu aanroepen uitvoert nodeapp
met berichten die worden bewaard in uw geconfigureerde statusarchief, is het belangrijk om deze opschoonstappen uit te voeren om lopende factureerbare bewerkingen te voorkomen.
Als u de resources wilt verwijderen die zijn gemaakt als onderdeel van dit scenario, voert u de volgende opdracht uit.
az group delete \
--resource-group $RESOURCE_GROUP
Tip
Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Container Apps-opslagplaats.