Sdílet prostřednictvím


Rychlý start: Nasazení aplikace Dapr do Azure Container Apps pomocí Azure CLI

Dapr (Distributed Application Runtime) pomáhá vývojářům vytvářet odolné a spolehlivé mikroslužby. V tomto rychlém startu se dozvíte, jak povolit spouštění sajdkáru Dapr společně s aplikacemi kontejnerů mikroslužeb. Budete:

  • Vytvořte prostředí Container Apps a úložiště stavů Azure Blog Storage pro vaše kontejnerové aplikace.
  • Nasaďte aplikaci kontejneru Pythonu, která publikuje zprávy.
  • Nasaďte Node.js kontejnerovou aplikaci, která se přihlásí k odběru zpráv a uchovává je v úložišti stavů.
  • Pomocí webu Azure Portal ověřte interakci mezi dvěma mikroslužbami.

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

Tento rychlý start zrcadlí aplikace, které nasadíte v opensourcovém rychlém startu Dapr Hello World .

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.

Pokud se při spouštění az containerapp příkazů v Azure CLI nebo rutinách Az.App z modulu v Azure PowerShellu zobrazí chyby týkající se chybějících parametrů, ujistěte se, že máte nainstalovanou nejnovější verzi rozšíření Azure Container Apps.

az extension add --name containerapp --upgrade

Poznámka:

Od května 2024 už rozšíření Azure CLI ve výchozím nastavení nepovolují funkce ve verzi Preview. Pokud chcete získat přístup k funkcím Container Apps ve verzi Preview, nainstalujte rozšíření Container Apps pomocí --allow-preview truenástroje .

az extension add --name containerapp --upgrade --allow-preview true

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

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í. <PLACEHOLDERS> 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"

Vytvořit prostředí

Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics.

Pokud chcete vytvořit prostředí, spusťte následující příkaz:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

Nastavení úložiště stavů

Vytvoření účtu služby Azure Blob Storage

S nasazeným prostředím nasaďte účet služby Azure Blob Storage, který používá aplikace kontejneru Node.js k ukládání dat. Před nasazením služby zvolte název účtu úložiště. Názvy účtů úložiště musí být v Rámci Azure jedinečné, od 3 do 24 znaků a musí obsahovat jenom číslice a malá písmena.

STORAGE_ACCOUNT_NAME="<storage account name>"

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

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

Konfigurace identity přiřazené uživatelem pro aplikaci node

I když Služba Container Apps podporuje spravovanou identitu přiřazenou uživatelem i systémem, identita přiřazená uživatelem poskytuje aplikaci s Node.js podporou Dapr s oprávněními pro přístup k účtu úložiště objektů blob.

  1. Vytvořte identitu přiřazenou uživatelem.

    az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity"     --output json
    
  2. principalId Načtěte vlastnosti a id uložte je do proměnných.

    PRINCIPAL_ID=$(az identity show -n "nodeAppIdentity" --resource-group     $RESOURCE_GROUP --query principalId | tr -d \")
    IDENTITY_ID=$(az identity show -n "nodeAppIdentity" --resource-group     $RESOURCE_GROUP --query id | tr -d \")
    CLIENT_ID=$(az identity show -n "nodeAppIdentity" --resource-group $RESOURCE_GROUP     --query clientId | tr -d \")
    
  3. Načtěte ID předplatného pro vaše aktuální předplatné.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  4. Storage Blob Data Contributor Přiřaďte roli identitě přiřazené uživatelem.

    az role assignment create --assignee $PRINCIPAL_ID  \
    --role "Storage Blob Data Contributor" \
    --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/    Microsoft.Storage/storageAccounts/$STORAGE_ACCOUNT_NAME"
    

Konfigurace komponenty úložiště stavů

I když máte více možností ověřování externích prostředků prostřednictvím Dapr. Tento příklad používá úložiště stavu založené na Azure, takže můžete poskytnout přímý přístup z aplikace Node.js k úložišti objektů blob pomocí spravované identity.

  1. V textovém editoru vytvořte soubor s názvem statestore.yaml s vlastnostmi, které jste vytvořili z předchozích kroků.

    # statestore.yaml for Azure Blob storage component
    componentType: state.azure.blobstorage
    version: v1
    metadata:
      - name: accountName
        value: "<STORAGE_ACCOUNT_NAME>"
      - name: containerName
        value: mycontainer
      - name: azureClientId
        value: "<MANAGED_IDENTITY_CLIENT_ID>"
    scopes:
      - nodeapp
    

    Tento soubor pomáhá aplikaci Dapr povolit přístup k vašemu úložišti stavů.

  2. Přejděte do adresáře, ve kterém jste uložili soubor yaml, a spuštěním následujícího příkazu nakonfigurujte komponentu Dapr v prostředí Container Apps.

    az containerapp env dapr-component set \
        --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP \
        --dapr-component-name statestore \
        --yaml statestore.yaml
    

Nasazení aplikace Node.js

az containerapp create \
  --name nodeapp \
  --resource-group $RESOURCE_GROUP \
  --user-assigned $IDENTITY_ID \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image dapriosamples/hello-k8s-node:latest \
  --min-replicas 1 \
  --max-replicas 1 \
  --enable-dapr \
  --dapr-app-id nodeapp \
  --dapr-app-port 3000 \
  --env-vars 'APP_PORT=3000'

Pokud používáte Službu Azure Container Registry, zahrňte příznak --registry-server <REGISTRY_NAME>.azurecr.io do příkazu.

Ve výchozím nastavení se image načítá z Docker Hubu.

Nasazení aplikace v Pythonu

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

Pokud používáte Službu Azure Container Registry, zahrňte příznak --registry-server <REGISTRY_NAME>.azurecr.io do příkazu.

Ověření výsledků

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 Azure Portal v prohlížeči a přejděte do svého účtu úložiště.

  2. V nabídce na levé straně vyberte Kontejnery úložiště>dat.

  3. Vyberte aplikaci typu kontejner.

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

  5. Vyberte soubor.

  6. Vyberte kartu Upravit.

  7. Výběrem tlačítka Aktualizovat můžete sledovat, jak se data automaticky aktualizují.

Zobrazit protokoly

Protokoly z aplikací kontejnerů 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 prostřednictvím rozhraní příkazového řádku. Zpočátku může dojít k malému zpoždění, než se tabulka zobrazí v pracovním prostoru.

Protokoly můžete zobrazit pomocí příkazového řádku pomocí následujícího příkazu rozhraní příkazového řádku.

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 | sort by TimeGenerated | take 5" \
  --out table

Následující výstup ukazuje typ odpovědi, kterou má příkaz rozhraní příkazového řádku 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ů

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.

Pokud chcete odstranit prostředky vytvořené v rámci tohoto názorného postupu, spusťte následující příkaz.

Upozornění

Tento příkaz odstraní zadanou skupinu prostředků a všechny prostředky obsažené v ní. Pokud prostředky mimo rozsah tohoto kurzu existují v zadané skupině prostředků, odstraní se také.

az group delete --resource-group $RESOURCE_GROUP

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