Kurz: Nasazení aplikace Dapr do azure Container Apps pomocí šablony Azure Resource Manageru nebo Bicep

Dapr (Distributed Application Runtime) je modul runtime, který pomáhá vytvářet odolné bezstavové a stavové mikroslužby. V tomto kurzu se ukázkové řešení Dapr nasadí do Azure Container Apps prostřednictvím šablony Azure Resource Manageru (ARM) nebo Bicep.

Získáte informace pro:

  • Vytvoření služby Azure Blob Storage pro použití jako úložiště stavů Dapr
  • Nasazení prostředí Container Apps pro hostování aplikací kontejnerů
  • Nasazení dvou kontejnerových aplikací s podporou dapr: jedna, která vytváří objednávky a jednu, která spotřebovává objednávky a ukládá je
  • Přiřazení identity přiřazené uživatelem k aplikaci kontejneru a jeho zadání s přiřazením role appropiate k ověření v úložišti stavů Dapr
  • Ověřte interakci mezi dvěma mikroslužbami.

S Azure Container Apps získáte při vytváření mikroslužeb plně spravovanou verzi rozhraní DAPR API . Když v Azure Container Apps používáte Dapr, můžete povolit spuštění sajdkáru vedle mikroslužeb, které poskytují bohatou sadu funkcí.

V tomto kurzu nasadíte řešení z rychlého startu Dapr Hello World .

Aplikace se skládá z:

  • Klientská aplikace kontejneru (Python) pro generování zpráv.
  • Aplikace kontejneru služby (Node) pro využívání a uchování těchto zpráv v úložišti stavů

Následující diagram architektury znázorňuje komponenty, které tvoří tento kurz:

Diagram architektury pro mikroslužby Dapr Hello World v Azure Container Apps

Požadavky

  • Vyžaduje se účet Azure s aktivním předplatným. Pokud ho ještě nemáte, můžete si zdarma vytvořit účet.
  • Účet GitHubu. Pokud ho ještě nemáte, zaregistrujte se zdarma.

Nastavení

Pokud se chcete přihlásit k Azure z rozhraní příkazového řádku, spusťte následující příkaz a podle pokynů dokončete proces ověřování.

az login

Pokud chcete zajistit, že používáte nejnovější verzi rozhraní příkazového řádku, spusťte příkaz upgrade.

az upgrade

Dále nainstalujte nebo aktualizujte rozšíření Azure Container Apps pro rozhraní příkazového řádku.

az extension add --name containerapp --upgrade

Teď, když je nainstalované aktuální rozšíření nebo modul, zaregistrujte obory Microsoft.App názvů a Microsoft.OperationalInsights obory názvů.

Poznámka:

Prostředky Azure Container Apps se migrovaly z Microsoft.Web oboru názvů do Microsoft.App oboru názvů. Další podrobnosti najdete v tématu Migrace oboru názvů z webu Microsoft.Web na Microsoft.App v březnu 2022 .

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

Nastavení proměnných prostředí

Nastavte následující proměnné prostředí. Zástupné symboly> nahraďte <hodnotami:

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

Vytvoření skupiny prostředků Azure

Vytvořte skupinu prostředků pro uspořádání služeb souvisejících s nasazením aplikace kontejneru.

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

Příprava úložiště GitHub

Přejděte do úložiště obsahujícího šablony ARM a Bicep, které se používají k nasazení řešení.

Výběrem tlačítka Fork v horní části úložiště rozvětvte úložiště do svého účtu.

Teď můžete fork naklonovat a pracovat s ním místně.

Pomocí následujícího příkazu Git naklonujte forkované úložiště do adresáře acadapr-templates .

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

Nasadit

Šablona se nasadí:

  • Prostředí Container Apps
  • pracovní prostor služby Log Analytics přidružený k prostředí Container Apps
  • Prostředek Přehledy aplikace pro distribuované trasování
  • účet úložiště objektů blob a výchozí kontejner úložiště
  • Komponenta Dapr pro účet úložiště objektů blob
  • aplikace kontejneru s podporou Dapr s spravovanou identitou přiřazenou uživatelem: hello-k8s-node
  • aplikace kontejneru s podporou Pythonu, Dapr: hello-k8s-python
  • Přiřazení role Active Directory pro aplikaci uzlu používanou komponentou Dapr k navázání připojení k úložišti objektů blob

Přejděte do adresáře acadapr-templates a spusťte následující příkaz:

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

Může se zobrazit upozornění (BCP081). Toto upozornění nemá žádný vliv na úspěšné nasazení aplikace.

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

Tento příkaz nasadí:

  • prostředí Container Apps a přidružený pracovní prostor Služby Log Analytics pro hostování řešení Hello World Dapr
  • instance Přehledy aplikace pro distribuované trasování Dapr
  • nodeapp aplikační server spuštěný targetPort: 3000 s povoleným Dapr a nakonfigurovaným pomocí: "appId": "nodeapp" a "appPort": 3000a identita přiřazená uživatelem s přístupem k úložišti objektů blob v Azure prostřednictvím přiřazení role Přispěvatel dat úložiště
  • Komponenta "type": "state.azure.blobstorage" Dapr s vymezeným oborem pro použití pro nodeapp ukládání stavu
  • Bezobslužná pythonapp služba, která vyvolá nodeapp službu pomocí volání služby Dapr

Ověření výsledku

Potvrzení úspěšné trvalosti stavu

Zobrazením dat v účtu Azure Storage můžete ověřit, že služby fungují správně.

  1. Otevřete v prohlížeči portál Azure Portal.

  2. Přejděte do nově vytvořeného účtu úložiště ve vaší skupině prostředků.

  3. V nabídce na levé straně vyberte Kontejnery .

  4. Vyberte vytvořený kontejner.

  5. Ověřte, že se zobrazí soubor s názvem order v kontejneru.

  6. Vyberte soubor.

  7. Vyberte kartu Upravit.

  8. Pokud chcete sledovat aktualizace, vyberte tlačítko Aktualizovat.

Zobrazit protokoly

Data zaprotokolovaná prostřednictvím aplikace kontejneru se ukládají do ContainerAppConsoleLogs_CL vlastní tabulky v pracovním prostoru služby Log Analytics. Protokoly můžete zobrazit prostřednictvím webu Azure Portal nebo z příkazového řádku. Než se dotazujete na protokolovaná data, počkejte několik minut, než se analýza poprvé dorazí.

K zobrazení protokolů v Bash nebo PowerShellu použijte následující příkaz.

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

Následující výstup ukazuje typ odpovědi, kterou má příkaz očekávat.

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

Vyčištění prostředků

Jakmile budete hotovi, spuštěním následujícího příkazu odstraňte skupinu prostředků spolu se všemi prostředky, které jste vytvořili v tomto kurzu.

az group delete \
  --resource-group $RESOURCE_GROUP

Poznámka:

Vzhledem k tomu pythonapp , že nepřetržitě provádí volání nodeapp se zprávami, které se zachovají do nakonfigurovaného úložiště stavu, je důležité tyto kroky čištění dokončit, aby se zabránilo průběžným fakturovatelným operacím.


Tip

Máte problémy? Dejte nám vědět na GitHubu otevřením problému v úložišti Azure Container Apps.

Další kroky