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.
Con el flujo de trabajo de Dapr, puede organizar fácilmente la mensajería, la administración de estados y la lógica de control de errores en varios microservicios. El flujo de trabajo de Dapr puede ayudarle a crear aplicaciones de ejecución prolongada, tolerantes a errores y con estado.
En esta guía, usará el ejemplo de flujo de trabajo de procesamiento de pedidos proporcionado para:
- Cree un Azure Container Registry y un clúster de AKS para este ejemplo.
- Instale la extensión Dapr en el clúster de AKS.
- Implemente la misma aplicación de ejemplo en AKS.
- Inicie y consulte instancias de flujo de trabajo mediante llamadas API HTTP.
El ejemplo de flujo de trabajo es un proyecto de ASP.NET Core con:
- Un archivo
Program.csque contiene la configuración de la aplicación, incluido el registro del flujo de trabajo y de las actividades de flujo de trabajo. - Definiciones de flujo de trabajo que se encuentran en el
Workflowsdirectorio. - Definiciones de actividad de flujo de trabajo que se encuentran en el
Activitiesdirectorio .
Requisitos previos
- Una suscripción de Azure con el rol Propietario o Administrador.
- Un rol de administrador de control de acceso basado en roles de Azure Kubernetes Service
- La última versión de la CLI de Azure
- La versión más reciente de Dapr
- Docker más reciente
- Helm más reciente
Configuración del entorno
Clone el proyecto de ejemplo
Clone la aplicación de flujo de trabajo de ejemplo.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Vaya a la raíz del directorio de ejemplo.
cd dapr-workflows-aks-sample
Creación de un clúster de Kubernetes
Cree un grupo de recursos para contener el clúster de AKS.
az group create --name myResourceGroup --location eastus
Cree un clúster de AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Asegúrese de que kubectl está instalado y apuntado al clúster de AKS. Si usa Azure Cloud Shell, kubectl ya está instalado.
Para más información, consulte el tutorial Implementación de un clúster de AKS.
Implementar la aplicación en Azure
Instalación de Dapr en el clúster de AKS
Instale la extensión Dapr en el clúster de AKS. Antes de empezar, asegúrese de que dispone de lo siguiente:
-
Instaló o actualizó
k8s-extension -
Registró
Microsoft.KubernetesConfigurationel proveedor de servicios
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr
Después de unos minutos, verá un resultado que muestra la conexión de Dapr al clúster de AKS. A continuación, inicialice Dapr en el clúster.
dapr init -k
Compruebe que Dapr está instalado:
kubectl get pods -A
Implementación del componente de almacén de estado de Actor de Redis
Vaya al directorio Deploy en la versión bifurcada del ejemplo:
cd Deploy
Implemente el componente Redis:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
Ejecución de la aplicación
Una vez implementado Redis, implementa la aplicación en AKS:
kubectl apply -f deployment.yaml
Exponga el sidecar de Dapr y la aplicación de ejemplo:
kubectl apply -f service.yaml
export APP_URL=$(kubectl get svc/workflows-sample -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export DAPR_URL=$(kubectl get svc/workflows-sample-dapr -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
Compruebe que se exportaron los comandos anteriores:
echo $APP_URL
echo $DAPR_URL
Inicio del flujo de trabajo
Ahora que la aplicación y Dapr se implementan en el clúster de AKS, puede iniciar y consultar instancias de flujo de trabajo. Vuelva a cargar los elementos del inventario mediante la siguiente llamada API a la aplicación de ejemplo:
curl -X GET $APP_URL/stock/restock
Inicio del flujo de trabajo:
curl -i -X POST $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/start \
-H "Content-Type: application/json" \
-H "dapr-app-id: dwf-app" \
-d '{"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}'
La salida esperada incluye un identificador de instancia generado automáticamente:
HTTP/1.1 202 Accepted
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:35:00 GMT
Content-Length: 21
{"instanceID":"<generated-id>"}
Compruebe el estado del flujo de trabajo:
curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
-H "dapr-app-id: dwf-app"
Resultado esperado:
HTTP/1.1 200 OK
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:51:02 GMT
Content-Length: 580
Supervise los registros de la aplicación:
kubectl logs -l run=workflows-sample -c workflows-sample --tail=20
Resultado esperado:
{
"instanceID":"1234",
"workflowName":"OrderProcessingWorkflow",
"createdAt":"2024-04-23T15:35:00.156714334Z",
"lastUpdatedAt":"2024-04-23T15:35:00.176459055Z",
"runtimeStatus":"COMPLETED",
"dapr.workflow.input":"{ \"input\" : {\"Name\": \"Paperclips\", \"TotalCost\": 99.95, \"Quantity\": 1}}",
"dapr.workflow.output":"{\"Processed\":true}"
}
Observe que el estado del flujo de trabajo está marcado como completado.