Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Dapr (Distributed Application Runtime) 可帮助开发人员构建可复原的可靠微服务。 在本快速入门中,使 Dapr sidecars 能够与生成和使用消息的两个容器应用一起运行,这些应用存储在Azure Blob Storage状态存储中。 使用 Azure Resource Manager 或 Bicep 文件,你将:
- 将 Azure CLI 命令传递给 部署模板,以启动运行微服务所需的所有组件。
- 验证Azure portal中的两个微服务之间的交互。
此快速入门复制了在开源 Dapr Hello World 快速入门中部署的应用程序。
先决条件
- 安装 Bicep 工具。
安装
若要从 CLI 登录到Azure,请运行以下命令,并按照提示完成身份验证过程。
az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud //means return to Public Azure.
为了确保运行最新版本的 CLI,请运行升级命令。
az upgrade
接下来,安装或更新 CLI 的 Azure Container Apps 扩展。
如果在 PowerShell 中的 az containerapp 模块中运行 Azure CLI 或 cmdlet 中的 Az.App 命令时收到有关缺少参数的错误,请确保安装了最新版本的 Azure Container Apps 扩展。
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="<new-resource-group>"
LOCATION="<location>"
CONTAINERAPPS_ENVIRONMENT="<containerapps-environment>"
创建Azure资源组
创建一个资源组来组织与你的容器应用部署相关的服务。
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
准备GitHub存储库
转到保存用于部署解决方案的 ARM 和 Bicep 文件的存储库。
选择 Fork 按钮,在 存储库 顶部,将存储库分叉到您的帐户。
现在,您可以克隆您的派生库以便在本地进行操作。 使用以下 git 命令将分支存储库克隆到 acadapr-templates 目录。
git clone https://github.com/<your-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"
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
此命令部署以下内容:
- 用于托管 hello world Dapr 解决方案的容器应用环境和关联的 Log Analytics 工作区。
- 一个 Application Insights 实例,用于 Dapr 分布式跟踪。
- 在
nodeapp上运行的targetPort: 3000应用服务器,该服务器启用了 Dapr 并配置了:"appId": "nodeapp""appPort": 3000- 通过存储数据贡献者角色分配访问 Azure Blob 存储的用户分配身份
-
"type": "state.azure.blobstorage"的 Dapr 组件,该组件的范围由nodeapp用于存储状态。 - 已启用 Dapr 的无外设
pythonapp,它使用 Dapr 服务调用来调用nodeapp服务。 - 用于建立与 Blob 存储连接的 Dapr 组件的 Node.js 应用所需的 Microsoft Entra ID 角色分配。
验证结果
确认状态是否成功持久化
可以通过查看Azure Storage帐户中的数据来确认服务正常工作。
在浏览器中打开 Azure portal。
前往您的资源组中创建的新存储帐户。
从边栏菜单中选择 Data storage>Containers。
选择创建的容器。
验证是否可以在容器中看到命名 顺序 的文件。
选择文件。
选择“编辑”选项卡。
选择“刷新”按钮以查看更新。
查看日志
容器应用中的日志存储在 Log Analytics 工作区的 ContainerAppConsoleLogs_CL 自定义表中。 可以通过Azure portal或通过 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 Container Apps 存储库中创建议题,让我们在 GitHub 上知晓。