Oktatóanyag: 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 az oktatóanyagban egy dapr-mintaalkalmazás lesz üzembe helyezve az Azure Container Appsben.
Az alábbiak végrehajtásának módját ismerheti meg:
- Container Apps-környezet létrehozása a tárolóalkalmazásokhoz
- Azure Blob Storage-állapottároló létrehozása a tárolóalkalmazáshoz
- Két olyan alkalmazás üzembe helyezése, amelyek üzeneteket hoznak létre és használnak fel, és megőrzik azokat az állapottárolóban
- Ellenőrizze a két mikroszolgáltatás közötti interakciót.
Az Azure Container Apps segítségével a Dapr API-k teljes körűen felügyelt verzióját kapja meg mikroszolgáltatások létrehozásakor. Ha a Daprt az Azure Container Appsben használja, engedélyezheti, hogy az oldalkocsik a mikroszolgáltatások mellett fussanak, amelyek számos képességet biztosítanak. Az elérhető Dapr API-k közé tartoznak a szolgáltatáshoz irányuló hívások, a Pub/Sub, az eseménykötések, az állapottárolók és az Actors.
Ebben az oktatóanyagban ugyanazokat az alkalmazásokat fogja üzembe helyezni a Dapr „Helló világ!” alkalmazás rövid útmutatóból.
Az alkalmazás a következőkből áll:
- Egy ügyfél-(Python-) tárolóalkalmazás üzenetek létrehozásához.
- Szolgáltatás (Node) tárolóalkalmazás az állapottárolóban lévő üzenetek felhasználására és megőrzésére
Az alábbi architektúradiagram az oktatóanyagot alkotó összetevőket mutatja be:
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 Azure CLI-ben, vagy parancsmagokat futtat az containerapp
az Az.App
Azure 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.
Feljegyzés
Az Azure Container Apps-erőforrások át lettek migrálva a Microsoft.Web
névtérből a Microsoft.App
névtérbe. További részletekért tekintse meg a Névtér 2022 . márciusi migrálását a Microsoft.Web-ből a Microsoft.App.
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 HELYŐRZŐket> az értékekre:
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 a következő lépés egy Azure Blob Storage-fiók üzembe helyezése, amelyet az egyik mikroszolgáltatás használ az adatok tárolására. A szolgáltatás üzembe helyezése előtt ki kell választania a tárfiók nevét. 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 támogatja a felhasználó által hozzárendelt és a rendszer által hozzárendelt felügyelt identitást is, a felhasználó által hozzárendelt identitások a Dapr-kompatibilis csomópontalkalmazás számára hozzáférést biztosítanak a blobtároló-fiók eléréséhez.
- Hozzon létre egy felhasználó által hozzárendelt identitást.
az identity create --resource-group $RESOURCE_GROUP --name "nodeAppIdentity" --output json
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 \")
- A szerepkör hozzárendelése
Storage Blob Data Contributor
a felhasználó által hozzárendelt identitáshoz
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)
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
A Külső erőforrások dapr-en keresztüli hitelesítésének több módja is van. Ez a példa nem futtatáskor használja a Dapr Secrets API-t, hanem Egy Azure-alapú állapottárolót használ. Ezért lemondhat egy titkos tár összetevő létrehozásáról, és ehelyett közvetlen hozzáférést biztosíthat a csomópontalkalmazásból a blobtárolóba felügyelt identitás használatával. Ha nem Azure-beli állapottárolót vagy Dapr Secrets API-t szeretne használni futásidőben, létrehozhat egy titkos tár összetevőt. Ez az összetevő betölti a futtatókörnyezet titkos kulcsát, így futásidőben hivatkozhat rájuk.
Nyisson meg egy szövegszerkesztőt, és hozzon létre egy statestore.yaml nevű konfigurációs fájlt az előző lépésekből származó tulajdonságokkal. Ez a fájl lehetővé teszi a Dapr-alkalmazás számára az állapottároló elérését. Az alábbi példa bemutatja, hogyan kell kinéznie a statestore.yaml fájlnak, ha az Azure Blob Storage-fiókhoz van konfigurálva:
# 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
A fájl használatához frissítse a helyőrzőket:
- Cserélje le
<STORAGE_ACCOUNT_NAME>
a megadott változó értékéreSTORAGE_ACCOUNT_NAME
. Az érték lekéréséhez futtassa a következő parancsot:
echo $STORAGE_ACCOUNT_NAME
- Cserélje le
<MANAGED_IDENTITY_CLIENT_ID>
a megadott változó értékéreCLIENT_ID
. Az érték lekéréséhez futtassa a következő parancsot:
echo $CLIENT_ID
Lépjen arra a könyvtárra, amelyben az összetevő yaml-fájlt tárolta, és futtassa a következő parancsot a Dapr-összetevő konfigurálásához a Container Apps-környezetben. További információ a Dapr-összetevők konfigurálásáról: Dapr-összetevők konfigurálása.
az containerapp env dapr-component set \
--name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP \
--dapr-component-name statestore \
--yaml statestore.yaml
A szolgáltatásalkalmazás üzembe helyezése (HTTP-webkiszolgáló)
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'
Alapértelmezés szerint a rendszerkép lekérte a Docker Hubról.
Az ügyfélalkalmazás üzembe helyezése (fej nélküli ügyfél)
Futtassa a következő parancsot az ügyféltároló-alkalmazás üzembe helyezéséhez.
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
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.
Nyissa meg az Azure Portalt a böngészőben, és keresse meg a tárfiókot.
Válassza a Tárolók bal oldali menüt.
Válassza ki a mycontainert.
Ellenőrizze, hogy látható-e a tárolóban elnevezett
order
fájl.Válassza ki a fájlt.
Válassza a Szerkesztés lapot.
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.
A következő PARANCSSOR-paranccsal megtekintheti a naplókat a parancssor használatával.
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
Gratulálunk! Elvégezte ezt az oktatóanyagot. 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
Feljegyzés
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.
Tipp.
Problémákat tapasztal? Tudassa velünk a GitHubon, ha megnyit egy hibát az Azure Container Apps adattárában.