Megosztás a következőn keresztül:


Rövid útmutató: Dapr-alkalmazás üzembe helyezése az Azure Container Appsben az Azure CLI használatával

A Dapr (elosztott alkalmazás futtatókörnyezete) segít a fejlesztőknek rugalmas, megbízható mikroszolgáltatások létrehozásában. Ebben a rövid útmutatóban megtudhatja, hogyan engedélyezheti a Dapr-oldalkocsik futtatását a mikroszolgáltatások tárolóalkalmazásai mellett. A következőt fogja:

  • Hozzon létre egy Container Apps-környezetet és egy Azure Blog Storage-állapottárolót a tárolóalkalmazásokhoz.
  • Üzeneteket közzétevő Python-tárolóalkalmazás üzembe helyezése.
  • Helyezzen üzembe egy Node.js tárolóalkalmazást, amely feliratkozik az üzenetekre, és egy állapottárolóban tárolja őket.
  • Ellenőrizze a két mikroszolgáltatás közötti interakciót az Azure Portal használatával.

Architektúradiagram a Dapr „Helló világ!” alkalmazás mikroszolgáltatásokhoz az Azure Container Appsben

Ez a rövid útmutató a nyílt forráskódú Dapr „Helló világ!” alkalmazás rövid útmutatóban üzembe helyezhető alkalmazásokat tükrözi.

Beállítás

Ha a parancssori felületről szeretne bejelentkezni az Azure-ba, futtassa a következő parancsot, és kövesse az utasításokat a hitelesítési folyamat befejezéséhez.

az login

A parancssori felület legújabb verziójának futtatásához futtassa a frissítési parancsot.

az upgrade

Ezután telepítse vagy frissítse az Azure Container Apps bővítményt a parancssori felülethez.

Ha hibaüzenetet kap a hiányzó paraméterekről, amikor parancsokat futtat az containerapp az Azure CLI-ben vagy parancsmagokat a Az.App PowerShell-modulból, győződjön meg arról, hogy telepítve van az Azure Container Apps bővítmény legújabb verziója.

az extension add --name containerapp --upgrade

Feljegyzés

2024 májusától kezdődően az Azure CLI-bővítmények alapértelmezés szerint nem engedélyezik az előzetes verziójú funkciókat. A Container Apps előzetes verziójú funkcióinak eléréséhez telepítse a Container Apps bővítményt a következővel --allow-preview true: .

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

Az aktuális bővítmény vagy modul telepítése után regisztrálja a névtereket és Microsoft.OperationalInsights a Microsoft.App névtereket.

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

Környezeti változók beállítása

Állítsa be a következő környezeti változókat. Cserélje le a <PLACEHOLDERS> következő értékeket:

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

Azure-erőforráscsoport létrehozása

Hozzon létre egy erőforráscsoportot a tárolóalkalmazás üzembe helyezéséhez kapcsolódó szolgáltatások rendszerezéséhez.

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

Környezet létrehozása

Az Azure Container Apps környezete biztonságos határt hoz létre a tárolóalkalmazások egy csoportja körül. Az ugyanabban a környezetben üzembe helyezett Tárolóalkalmazások ugyanabban a virtuális hálózaton vannak üzembe helyezve, és naplókat írnak ugyanarra a Log Analytics-munkaterületre.

A környezet létrehozásához futtassa a következő parancsot:

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

Állapottároló beállítása

Azure Blob Storage-fiók létrehozása

A környezet üzembe helyezésével helyezzen üzembe egy Azure Blob Storage-fiókot, amelyet a Node.js tárolóalkalmazás használ az adatok tárolására. A szolgáltatás üzembe helyezése előtt válasszon nevet a tárfióknak. A tárfiókok nevének egyedinek kell lennie az Azure-ban, 3–24 karakter hosszúságúnak kell lennie, és csak számokat és kisbetűket kell tartalmaznia.

STORAGE_ACCOUNT_NAME="<storage account name>"

Az Azure Storage-fiók létrehozásához használja az alábbi parancsot.

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

Felhasználó által hozzárendelt identitás konfigurálása a csomópontalkalmazáshoz

Bár a Container Apps a felhasználó által hozzárendelt és a rendszer által hozzárendelt felügyelt identitást is támogatja, a felhasználó által hozzárendelt identitások hozzáférést biztosítanak a Dapr-kompatibilis Node.js alkalmazásnak a Blob Storage-fiókhoz való hozzáféréshez.

  1. Hozzon létre egy felhasználó által hozzárendelt identitást.

    az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity"     --output json
    
  2. Kérje le a principalId tulajdonságokat, id és tárolja változókban.

    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. Kérje le az aktuális előfizetés előfizetés-azonosítóját.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  4. Rendelje hozzá a Storage Blob Data Contributor szerepkört a felhasználó által hozzárendelt identitáshoz.

    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"
    

Az állapottároló összetevő konfigurálása

Bár több lehetősége is van a külső erőforrások Dapr-en keresztüli hitelesítésére. Ez a példa egy Azure-alapú állapottárolót használ, így közvetlen hozzáférést biztosíthat a Node.js alkalmazásból a Blob Store-ba felügyelt identitás használatával.

  1. Egy szövegszerkesztőben hozzon létre egy statestore.yaml nevű fájlt az előző lépésekből származó tulajdonságokkal.

    # 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
    

    Ez a fájl lehetővé teszi a Dapr-alkalmazás számára az állapottároló elérését.

  2. Lépjen arra a könyvtárra, amelyben a yaml-fájlt tárolta, és futtassa a következő parancsot a Dapr-összetevő konfigurálásához a Container Apps-környezetben.

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

Az Node.js alkalmazás üzembe helyezése

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'

Ha Azure Container Registryt használ, vegye fel a --registry-server <REGISTRY_NAME>.azurecr.io jelölőt a parancsba.

Alapértelmezés szerint a rendszerkép lekérte a Docker Hubról.

A Python-alkalmazás üzembe helyezése

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

Ha Azure Container Registryt használ, vegye fel a --registry-server <REGISTRY_NAME>.azurecr.io jelölőt a parancsba.

Az eredmények ellenőrzése

Az állapot sikeres megőrzésének megerősítése

Az Azure Storage-fiók adatainak megtekintésével ellenőrizheti, hogy a szolgáltatások megfelelően működnek-e.

  1. Nyissa meg az Azure Portalt a böngészőben, és keresse meg a tárfiókot.

  2. A bal oldali menüben válassza az Adattároló-tárolók> lehetőséget.

  3. Válassza ki a tárolóalkalmazást.

  4. Ellenőrizze, hogy látható-e a tárolóban elnevezett order fájl.

  5. Válassza ki a fájlt.

  6. Válassza a Szerkesztés lapot.

  7. A Frissítés gombra kattintva megfigyelheti, hogyan frissülnek automatikusan az adatok.

Naplók megtekintése

A tárolóalkalmazásokból származó naplók a ContainerAppConsoleLogs_CL Log Analytics-munkaterület egyéni táblájában vannak tárolva. A naplókat az Azure Portalon vagy a parancssori felületen tekintheti meg. Előfordulhat, hogy a tábla kezdetben kis késéssel jelenik meg a munkaterületen.

Tekintse meg a naplókat a parancssor használatával a következő PARANCSSOR-paranccsal.

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

Az alábbi kimenet bemutatja a parancssori felületi parancstól elvárható válasz típusát.

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

Az erőforrások eltávolítása

Mivel pythonapp a konfigurált állapottárolóban folyamatosan olyan üzenetekkel indít hívásokat nodeapp , amelyek továbbra is megmaradnak, fontos elvégezni ezeket a törlési lépéseket a folyamatos számlázható műveletek elkerülése érdekében.

Ha törölni szeretné az útmutató részeként létrehozott erőforrásokat, futtassa a következő parancsot.

Figyelemfelhívás

Ez a parancs törli a megadott erőforráscsoportot és a benne lévő összes erőforrást. Ha az oktatóanyag hatókörén kívül eső erőforrások a megadott erőforráscsoportban találhatók, akkor azok is törlődnek.

az group delete --resource-group $RESOURCE_GROUP

Tipp.

Problémákat tapasztal? Tudassa velünk a GitHubon, ha megnyit egy hibát az Azure Container Apps adattárában.

Következő lépések