Share via


Zelfstudie: Een Dapr-toepassing implementeren in Azure Container Apps met een Azure Resource Manager- of Bicep-sjabloon

Dapr (Distributed Application Runtime) is een runtime waarmee u tolerante staatloze en stateful microservices kunt bouwen. In deze zelfstudie wordt een voorbeeld van een Dapr-oplossing geïmplementeerd in Azure Container Apps via een Arm-sjabloon (Azure Resource Manager) of Bicep-sjabloon.

U leert het volgende:

  • Een Azure Blob Storage maken voor gebruik als een Dapr-statusarchief
  • Een Container Apps-omgeving implementeren om container-apps te hosten
  • Implementeer twee container-apps met dapr-functionaliteit: een app die orders produceert en één die orders verbruikt en opslaat
  • Wijs een door de gebruiker toegewezen identiteit toe aan een container-app en geef deze op met de toegewezen roltoewijzing om te verifiëren bij de Dapr-statusopslag
  • Controleer de interactie tussen de twee microservices.

Met Azure Container Apps krijgt u een volledig beheerde versie van de Dapr-API's bij het bouwen van microservices. Wanneer u Dapr in Azure Container Apps gebruikt, kunt u sidecars inschakelen naast uw microservices die een uitgebreide set mogelijkheden bieden.

In deze zelfstudie implementeert u de oplossing vanuit de Dapr Hallo wereld quickstart.

De toepassing bestaat uit:

  • Een clientcontainer-app (Python) voor het genereren van berichten.
  • Een servicecontainer-app (Node) voor het verbruik en persistent maken van deze berichten in een statusarchief

In het volgende architectuurdiagram ziet u de onderdelen waaruit deze zelfstudie bestaat:

Architectuurdiagram voor Dapr Hallo wereld microservices in Azure Container Apps

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.

az extension add --name containerapp --upgrade

Nu de huidige extensie of module is geïnstalleerd, registreert u de Microsoft.App en Microsoft.OperationalInsights naamruimten.

Notitie

Azure Container Apps-resources zijn gemigreerd van de Microsoft.Web naamruimte naar de Microsoft.App naamruimte. Raadpleeg de naamruimtemigratie van Microsoft.Web naar Microsoft.App in maart 2022 voor meer informatie.

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

Omgevingsvariabelen instellen

Stel de volgende omgevingsvariabelen in. Vervang <TIJDELIJKE AANDUIDINGEN> 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

Met de sjabloon wordt het volgende geïmplementeerd:

  • een Container Apps-omgeving
  • een Log Analytics-werkruimte die is gekoppeld aan de Container Apps-omgeving
  • een Application Insights-resource voor gedistribueerde tracering
  • een blob-opslagaccount en een standaardopslagcontainer
  • een Dapr-onderdeel voor het blob-opslagaccount
  • het knooppunt, een container-app met dapr-functionaliteit met een door de gebruiker toegewezen beheerde identiteit: hello-k8s-node
  • de python-container-app met Dapr-functionaliteit: hello-k8s-python
  • een Active Directory-roltoewijzing voor de knooppunt-app die door het Dapr-onderdeel wordt gebruikt om een verbinding met blobopslag tot stand te brengen

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 uitgevoerd targetPort: 3000 met Dapr ingeschakeld en geconfigureerd met behulp van: "appId": "nodeapp" en "appPort": 3000, en een door de gebruiker toegewezen identiteit met toegang tot de Azure Blob-opslag via een roltoewijzing opslaggegevensbijdrager
  • Een Dapr-onderdeel van "type": "state.azure.blobstorage" het bereik voor gebruik door de nodeapp status opslaan
  • de dapr ingeschakeld, headless pythonapp die de nodeapp service aanroept met behulp van dapr-service-aanroep

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.

  1. Open Azure Portal in uw browser.

  2. Ga naar het zojuist gemaakte opslagaccount in uw resourcegroep.

  3. Selecteer Containers in het menu aan de linkerkant.

  4. Selecteer de gemaakte container.

  5. Controleer of u het bestand met de naam order in de container kunt zien.

  6. Selecteer het bestand.

  7. Selecteer het tabblad Bewerken .

  8. Selecteer de knop Vernieuwen om updates te bekijken.

Logboeken bekijken

Gegevens die zijn vastgelegd via een container-app, worden opgeslagen in de ContainerAppConsoleLogs_CL aangepaste tabel in de Log Analytics-werkruimte. U kunt logboeken bekijken via Azure Portal of vanaf de opdrachtregel. Wacht enkele minuten totdat de analyse voor het eerst binnenkomt voordat u een query uitvoert op de vastgelegde gegevens.

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

Wanneer u klaar bent, voert u de volgende opdracht uit om uw resourcegroep te verwijderen, samen met alle resources die u in deze zelfstudie hebt gemaakt.

az group delete \
  --resource-group $RESOURCE_GROUP

Notitie

Aangezien pythonapp u continu aanroepen uitvoert nodeapp met berichten die worden bewaard in uw geconfigureerde statusarchief, is het belangrijk om deze opschoonstappen te voltooien om lopende factureerbare bewerkingen te voorkomen.


Tip

Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Container Apps-opslagplaats.

Volgende stappen