Kurz: nasazení aplikace v Dapr do služby Azure Container Apps pomocí rozhraní příkazového řádku Azure

Dapr (Distributed Application Runtime) je modul runtime, který pomáhá vytvářet odolné, bezstavové a stavové mikroslužby. V tomto kurzu je ukázková aplikace Dapr nasazená ve službě Azure Container Apps.

Získáte informace o těchto tématech:

  • Vytvoření prostředí kontejnerových aplikací pro aplikace typu kontejner
  • vytvoření úložiště stavu Azure Blob Storage pro aplikaci kontejneru
  • Nasazení dvou aplikací, které vytváří a využívají zprávy a uchovávají je v úložišti stavů
  • Ověřte interakci mezi dvěma mikroslužbami.

Azure Container Apps nabízí plně spravovanou verzi rozhraní API Dapr při vytváření mikroslužeb. Když ve službě Azure Container Apps používáte Dapr, můžete povolit, aby sajdkáry běžely vedle vašich mikroslužeb, které poskytují bohatou sadu funkcí. K dispozici jsou Dapr rozhraní API služby pro volání služeb, publikování za sekundu, vazby událostí, úložiště stavůa objekty actor.

V tomto kurzu nasadíte stejné aplikace z Dapr Hello World rychlý Start, který se skládá z aplikace klienta (Python), která generuje zprávy, a aplikace služby (uzlu), která využívá a uchovává tyto zprávy v nakonfigurovaném úložišti stavů. Následující diagram architektury znázorňuje komponenty, které tvoří tento kurz:

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

Předpoklady

Než začnete

Tato příručka využívá následující proměnné prostředí:

RESOURCE_GROUP="my-containerapps"
LOCATION="canadacentral"
CONTAINERAPPS_ENVIRONMENT="containerapps-env"
LOG_ANALYTICS_WORKSPACE="containerapps-logs"
STORAGE_ACCOUNT_CONTAINER="mycontainer"

Výše uvedený fragment kódu lze použít k nastavení proměnných prostředí pomocí bash, zsh nebo PowerShellu.

STORAGE_ACCOUNT="<storage account name>"

Vyberte název STORAGE_ACCOUNT . Vytvoří se v následujícím kroku. názvy účtů Storage musí být v rámci Azure jedinečné a musí být dlouhé 3 až 24 znaků a můžou obsahovat jenom číslice a malá písmena.

Nastavení

Začněte přihlášením k Azure z CLI.

Spusťte následující příkaz a postupujte podle pokynů k dokončení procesu ověřování.

az login

Ujistěte se, že používáte nejnovější verzi rozhraní příkazového řádku prostřednictvím příkazu pro upgrade.

az upgrade

V dalším kroku nainstalujte do CLI rozšíření Azure Container Apps.

az extension add \
  --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl 

Teď, když je rozšíření nainstalované, zaregistrujte Microsoft.Web obor názvů.

az provider register --namespace Microsoft.Web

Vytvořte skupinu prostředků pro uspořádání služeb vztahujících se k vaší nové aplikaci typu kontejner.

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

S upgradovaným rozhraním příkazového řádku a novou skupinou prostředků můžete vytvořit prostředí kontejnerových aplikací a nasadit aplikaci typu kontejner.

Vytvoření prostředí

Prostředí Azure Container Apps slouží jako hranice izolace mezi skupinou kontejnerových aplikací. Aplikace kontejneru nasazené do stejného prostředí jsou nasazené ve stejné virtuální síti a protokoly zápisu do stejného Log Analytics pracovního prostoru.

Azure Log Analytics slouží k monitorování aplikace typu kontejner a vyžaduje se při vytváření prostředí kontejnerových aplikací.

Pomocí následujícího příkazu vytvořte nový pracovní prostor Log Analytics:

az monitor log-analytics workspace create \
  --resource-group $RESOURCE_GROUP \
  --workspace-name $LOG_ANALYTICS_WORKSPACE

Dále načtěte ID klienta Log Analytics a tajný klíč klienta.

Ujistěte se, že každý dotaz spouštíte samostatně, abyste měli dostatek času na dokončení žádosti.

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az monitor log-analytics workspace show --query customerId -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`
LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET=`az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`

Jednotlivé aplikace kontejneru se nasazují do prostředí Azure Container Apps. Chcete-li vytvořit prostředí, spusťte následující příkaz:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --logs-workspace-id $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --logs-workspace-key $LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET \
  --location "$LOCATION"

Nastavení úložiště stavů

vytvoření účtu Azure Blob Storage

pomocí následujícího příkazu vytvořte nový účet Azure Storage.

az storage account create \
  --name $STORAGE_ACCOUNT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --sku Standard_RAGRS \
  --kind StorageV2

po vytvoření účtu Azure Blob Storage se pro další kroky v tomto kurzu vyžadují následující hodnoty.

  • storage_account_name je hodnota STORAGE_ACCOUNT proměnné, kterou jste zvolili výše.

  • storage_container_name je hodnota STORAGE_ACCOUNT_CONTAINER definovaná výše (například mycontainer ). Dapr vytvoří kontejner s tímto názvem, pokud ještě v účtu Azure Storage neexistuje.

Pomocí následujícího příkazu Získejte klíč účtu úložiště.

STORAGE_ACCOUNT_KEY=`az storage account keys list --resource-group $RESOURCE_GROUP --account-name $STORAGE_ACCOUNT --query '[0].value' --out tsv`
echo $STORAGE_ACCOUNT_KEY

Konfigurace součásti úložiště stavů

Pomocí vlastností, které jste najmenovali v předchozích krocích, vytvořte konfigurační soubor s názvem Components. yaml. Tento soubor pomáhá aplikaci Dapr povolit přístup k vašemu úložišti stavů. následující příklad ukazuje, jak by měl soubor components. yaml vypadat, když je nakonfigurovaný pro váš účet Azure Blob Storage:

# components.yaml for Azure Blob storage component
- name: statestore
  type: state.azure.blobstorage
  version: v1
  metadata:
  # Note that in a production scenario, account keys and secrets 
  # should be securely stored. For more information, see
  # https://docs.dapr.io/operations/components/component-secrets
  - name: accountName
    value: <YOUR_STORAGE_ACCOUNT_NAME>
  - name: accountKey
    value: <YOUR_STORAGE_ACCOUNT_KEY>
  - name: containerName
    value: <YOUR_STORAGE_CONTAINER_NAME>

Chcete-li použít tento soubor, nezapomeňte nahradit hodnoty zástupných symbolů mezi <> závorkami vlastními hodnotami.

Poznámka

Aplikace kontejneru v současné době nepodporuje nativní schéma komponent Dapr. Výše uvedený příklad používá podporované schéma.

V aplikaci produkčního prostředí postupujte podle pokynů pro správu tajných kódů pro bezpečnou správu tajných kódů.

Nasazení aplikace služby (webový server HTTP)

Přejděte do adresáře, kam jste uložili soubor Components. yaml a spusťte následující příkaz, který nasadí aplikaci kontejneru služby.

az containerapp create \
  --name nodeapp \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image dapriosamples/hello-k8s-node:latest \
  --target-port 3000 \
  --ingress 'external' \
  --min-replicas 1 \
  --max-replicas 1 \
  --enable-dapr \
  --dapr-app-port 3000 \
  --dapr-app-id nodeapp \
  --dapr-components ./components.yaml

Tento příkaz nasadí server aplikace služby (Node) na --target-port 3000 (port aplikace) spolu s příslušným Daprm postranním vozíkem nakonfigurovaným pomocí --dapr-app-id nodeapp a --dapr-app-port 3000 pro zjišťování a vyvolání služby. Vaše úložiště stavů je nakonfigurované pomocí --dapr-components ./components.yaml , což umožňuje, aby mohl postranní vozík zachovat stav.

Nasazení klientské aplikace (bezobslužný klient)

Spusťte následující příkaz pro nasazení aplikace kontejneru klienta.

az containerapp create \
  --name pythonapp \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image dapriosamples/hello-k8s-python:latest \
  --min-replicas 1 \
  --max-replicas 1 \
  --enable-dapr \
  --dapr-app-id pythonapp

Tento příkaz nasadí pythonapp , že se také spouští s postranním vozíkem Dapr, který slouží k vyhledání a bezpečnému volání Daprho vozíku pro nodeapp . Vzhledem k tomu, že je tato aplikace bez periferních zařízení --target-port , nemusíte spouštět Server, není ale nutné povolit příchozí přenos dat.

Ověřit výsledek

Potvrdit trvalost stavu úspěšné

správné fungování služeb můžete ověřit zobrazením dat v účtu Azure Storage.

  1. Otevřete Azure Portal v prohlížeči a přejděte k účtu úložiště.

  2. Vyberte kontejnery vlevo.

  3. Vyberte myContainer.

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

  5. Klikněte na soubor .

  6. Klikněte na kartu Upravit.

  7. Klikněte na tlačítko Aktualizovat a sledujte, jak se data automaticky aktualizují.

Zobrazit protokoly

Data protokolovaná prostřednictvím aplikace kontejneru se ukládají ve ContainerAppConsoleLogs_CL vlastní tabulce v pracovním prostoru služby Log Analytics. Protokoly můžete zobrazit prostřednictvím Azure Portal nebo pomocí rozhraní příkazového řádku. Možná budete muset několik minut počkat, než se analýza poprvé objeví, než budete moct zaprotokolovaná data dotazovat.

K zobrazení protokolů na příkazovém řádku použijte následující příkaz rozhraní příkazového řádku.

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, která se má očekávat od příkazu rozhraní příkazového řádku.

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

Tip

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

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

Jakmile budete hotovi, vyčistěte prostředky aplikace kontejneru spuštěním následujícího příkazu, kterým odstraníte skupinu prostředků.

az group delete \
    --resource-group $RESOURCE_GROUP

Tento příkaz odstraní aplikace kontejneru, účet úložiště, prostředí aplikací kontejnerů a všechny další prostředky ve skupině prostředků.

Poznámka

Vzhledem k tomu, že průběžně volá metody se zprávami, které se uchová v nakonfigurovaných stavových obchodech, je důležité tyto kroky vyčištění dokončit, abyste se vyhnuli průběžným pythonapp nodeapp fakturovatelným operacím.

Další kroky