快速入門:使用 Azure Resource Manager 或 Bicep 範本將 Dapr 應用程式部署至 Azure Container Apps
Dapr (分散式應用程式執行階段) 可協助開發人員組建易復原且可靠的微服務。 在本快速入門中,您會讓 Dapr Sidecars 與兩個容器應用程式一起執行,這些應用程式會產生和取用訊息,並儲存在 Azure Blob 儲存體 狀態存放區中。 使用 Azure Resource Manager 或 Bicep 範本,您將:
- 傳遞 Azure CLI 命令來 部署範本 ,以啟動執行微服務所需的所有專案。
- 確認 Azure 入口網站 中兩個微服務之間的互動。
本快速入門會鏡像您在開放原始碼 Dapr Hello World 快速入門中部署的應用程式。
必要條件
設定
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證流程。
az login
若要確定您執行的是最新版本 CLI,請執行升級命令。
az upgrade
接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。
如果您在 Azure CLI 中執行 az containerapp
命令或 Azure PowerShell 模組中的 Cmdlet Az.App
時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure 容器應用程式延伸模組。
az extension add --name containerapp --upgrade
注意
從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true
安裝容器應用程式延伸模組。
az extension add --name containerapp --upgrade --allow-preview true
現在已安裝目前的延伸模組或模組,請註冊 Microsoft.App
和 Microsoft.OperationalInsights
命名空間。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
設定環境變數
設定下列環境變數。 <PLACEHOLDERS>
取代為您的值:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
建立 Azure 資源群組
建立資源群組,以組織與容器應用程式部署相關的服務。
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
準備 GitHub 存放庫
移至存放庫,其中保存用來部署解決方案的 ARM 和 Bicep 範本。
選取存放庫頂端的 [分支] 按鈕,將存放庫派生到您的帳戶。
現在,您可以複製分支以在本機使用。
使用下列 git 命令,將分支存放庫複製到 acadapr-templates 目錄。
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
部署
瀏覽至 acadapr-templates 目錄,然後執行下列命令:
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
可能會顯示警告 (BCP081)。 此警告不會對應用程式的成功部署造成影響。
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
此命令會部署:
- 容器應用程式環境和相關聯的Log Analytics工作區,用於裝載 hello world Dapr 解決方案。
- Dapr 分散式追蹤的 Application Insights 實例。
- 使用
nodeapp
下列項目啟用及設定 Dapr 執行targetPort: 3000
的應用程式伺服器:"appId": "nodeapp"
"appPort": 3000
- 可透過記憶體數據參與者角色指派存取 Azure Blob 記憶體的使用者指派身分識別
- 範圍設定
"type": "state.azure.blobstorage"
為的 Dapr 元件,供nodeapp
儲存狀態使用。 - 已啟用 Dapr 的無
pythonapp
前端,nodeapp
會使用 Dapr 服務調用叫用服務。 - Dapr 元件用來建立 Blob 記憶體連線之Node.js應用程式的Microsoft Entra ID 角色指派。
確認結果
確認成功狀態持續性
您可藉由檢視 Azure 儲存體帳戶中的資料,確認服務運作正常。
在瀏覽器中,開啟 Azure 入口網站。
移至資源群組中新建立的儲存體帳戶。
從左側功能表中選取 [數據記憶體>容器]。
選取已建立的容器。
確認您可在容器中看到名為
order
的檔案。選取 檔案。
選取 [編輯] 索引標籤。
選取 [重新整理] 按鈕以觀察更新。
檢視記錄檔
容器應用程式裡的記錄會儲存在 Log Analytics 工作區的 ContainerAppConsoleLogs_CL
自訂資料表中。 您可以透過 Azure 入口網站或 CLI 來檢視記錄。 資料表一開始出現在工作區時可能會稍微延遲。
使用下列命令來檢視 bash 或 PowerShell 中的記錄。
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
下列輸出示範預計來自命令的回應類型。
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
清除資源
由於 pythonapp
會持續呼叫 nodeapp
並保存至已設定狀態存放區中的訊息,因此請務必完成這些清除步驟,以避免進行中的可計費作業。
如果您想要刪除在本逐步解說中建立的資源,請執行下列命令。
az group delete \
--resource-group $RESOURCE_GROUP
提示
有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。