Inicio rápido: Implementación de una aplicación Dapr en Azure Container Apps con una plantilla de Azure Resource Manager o Bicep
Dapr (Distributed Application Runtime) ayuda a los desarrolladores a crear microservicios resistentes y de confianza. En este inicio rápido, habilitará los sidecars de Dapr para que se ejecuten junto a dos aplicaciones contenedoras que producen y consumen mensajes, almacenados en un almacén de estados de Azure Blob Storage. Con plantillas de Azure Resource Manager o Bicep, hará lo siguiente:
- Pasar los comandos de la CLI de Azure para implementar una plantilla que inicie todo lo necesario para ejecutar microservicios.
- Comprobar la interacción entre los dos microservicios en Azure Portal.
Este inicio rápido refleja las aplicaciones que implementa en el inicio rápido de código abierto de Dapr Hola mundo.
Requisitos previos
- Instalación de la CLI de Azure
- Instalar Git
- Se requiere una cuenta de Azure con una suscripción activa. Si no la tiene, puede crear una cuenta gratis.
- Una cuenta de GitHub. Si no tiene ninguna aún, regístrese gratis.
Configurar
Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.
az login
Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.
az upgrade
Luego, instale o actualice la extensión de Azure Container Apps para la CLI.
Si recibe errores sobre los parámetros que faltan al ejecutar az containerapp
comandos en la CLI de Azure o cmdlets del Az.App
módulo en Azure PowerShell, asegúrese de que tiene instalada la versión más reciente de la extensión Azure Container Apps.
az extension add --name containerapp --upgrade
Nota:
A partir de mayo de 2024, las extensiones de la CLI de Azure ya no habilitan las características en versión preliminar de forma predeterminada. Para acceder a las características de la versión preliminar de Container Apps, instale la extensión Container Apps con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ahora que la extensión o módulo actualizado está instalado, registre los espacios de nombre Microsoft.App
y Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Establecimiento de variables de entorno
Establezca las siguientes variables de entorno. Reemplace <PLACEHOLDERS>
por valores propios:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Creación de un grupo de recursos de Azure
Cree un grupo de recursos para organizar los servicios relacionados con la implementación de la aplicación contenedora.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Preparación del repositorio de GitHub
Vaya al repositorio que contiene las plantillas de ARM y Bicep que se usan para implementar la solución.
Seleccione el botón Bifurcar situado en la parte superior del repositorio para bifurcar el repositorio en su cuenta.
Ahora puede clonar la bifurcación para trabajar con ella localmente.
Use el siguiente comando de Git para clonar el repositorio bifurcado en el directorio acadapr-templates.
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
Implementar
Vaya al directorio acadapr-templates y ejecute el siguiente comando:
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Puede que se muestre una advertencia (BCP081). Esta advertencia no tiene ningún efecto en la implementación correcta de la aplicación.
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Este comando implementa:
- El entorno de Container Apps y el área de trabajo de Log Analytics asociada para hospedar la solución Hola mundo de Dapr.
- Una instancia de Application Insights para el seguimiento distribuido de Dapr.
- El servidor de aplicaciones
nodeapp
que se ejecuta entargetPort: 3000
con Dapr habilitado y configurado mediante:"appId": "nodeapp"
"appPort": 3000
- Una identidad asignada por el usuario con acceso a Azure Blob Storage a través de una asignación de rol de Colaborador de datos de almacenamiento
- Un componente de Dapr de
"type": "state.azure.blobstorage"
con ámbito para su uso por parte denodeapp
para almacenar el estado. - La
pythonapp
habilitada para Dapr, sin encabezado, que invoca el servicionodeapp
mediante la invocación del servicio Dapr. - Una asignación de roles de Microsoft Entra ID para la aplicación de Node.js usada por el componente Dapr para establecer una conexión a Blob Storage.
Comprobar el resultado
Confirmación de la persistencia de estado correcta
Puede confirmar que los servicios funcionan correctamente mediante la visualización de datos en la cuenta de Azure Storage.
En el explorador, abra Azure Portal.
Vaya a la cuenta de almacenamiento recién creada en el grupo de recursos.
Seleccione Almacenamiento de datos>Contenedores en el menú de la izquierda.
Seleccione el contenedor creado.
Compruebe que puede ver el archivo denominado
order
en el contenedor.Seleccione el archivo .
Seleccione la pestaña Editar.
Seleccione el botón Actualizar para ver las actualizaciones.
Ver registros
Los registros de una aplicación de contenedor se almacenan en la tabla personalizada ContainerAppConsoleLogs_CL
del área de trabajo de Log Analytics. Puede ver los registros mediante Azure Portal o la CLI. Inicialmente, la tabla puede tardar un breve período de tiempo en aparecer en el área de trabajo.
Use el comando siguiente para ver los registros en Bash o 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
En la salida siguiente se muestra el tipo de respuesta que se espera del comando.
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
Limpieza de recursos
Puesto que pythonapp
realiza llamadas continuas a nodeapp
con mensajes que se conservan en el almacén de estado configurado, es importante completar estos pasos de limpieza para evitar las operaciones facturables en curso.
Si quiere eliminar los recursos creados como parte de este tutorial, ejecute el siguiente comando.
az group delete \
--resource-group $RESOURCE_GROUP
Sugerencia
¿Tiene problemas? Háganoslo saber en GitHub abriendo una incidencia en el repositorio de Azure Container Apps.