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
Clonar la aplicación de flujo de trabajo de ejemplo.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Dirígete al directorio raíz del ejemplo.
cd dapr-workflows-aks-sample
Creación de un clúster de Kubernetes
Cree un grupo de recursos para alojar el clúster de AKS.
az group create --name <your-resource-group> --location eastus
Cree un clúster de AKS.
az aks create --resource-group <your-resource-group> --name <your-AKS-cluster> --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 AKS
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:
-
Instalación o actualización de
k8s-extension -
Registro del proveedor de
Microsoft.KubernetesConfigurationservicios
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group <your-resource-group> --name dapr --extension-type Microsoft.Dapr
Después de unos minutos, la salida 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
Diríjase 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.