Compartir a través de


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.

Diagrama de arquitectura de Dapr Hola mundo microservicios en Azure Container Apps

Este inicio rápido refleja las aplicaciones que implementa en el inicio rápido de código abierto de Dapr Hola mundo.

Requisitos previos

  • 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 en targetPort: 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 de nodeapp para almacenar el estado.
  • La pythonapp habilitada para Dapr, sin encabezado, que invoca el servicio nodeapp 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.

  1. En el explorador, abra Azure Portal.

  2. Vaya a la cuenta de almacenamiento recién creada en el grupo de recursos.

  3. Seleccione Almacenamiento de datos>Contenedores en el menú de la izquierda.

  4. Seleccione el contenedor creado.

  5. Compruebe que puede ver el archivo denominado order en el contenedor.

  6. Seleccione el archivo .

  7. Seleccione la pestaña Editar.

  8. 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.

Pasos siguientes