Implementación y ejecución de flujos de trabajo con la extensión Dapr para Azure Kubernetes Service (AKS)

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 Program.cs archivo que contiene la configuración de la aplicación, incluido el registro del flujo de trabajo y las actividades de flujo de trabajo.
  • Definiciones de flujo de trabajo encontradas en el Workflows directorio.
  • Actividades de flujo de trabajo encontradas en el Activities directorio.

Nota:

El flujo de trabajo de Dapr es actualmente una característica beta y está en modo de autoservicio. Las API y los componentes de Dapr beta se proporcionan "tal cual" y "como están disponibles", y evolucionan continuamente a medida que avanzan hacia un estado estable. Las API y los componentes beta no están cubiertos por el soporte técnico al cliente.

Requisitos previos

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/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:

az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr

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-beta1/workflows/dapr/OrderProcessingWorkflow/start?instanceID=1234 \
  -H "Content-Type: application/json" \
  -d '{ "input" : {"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}}'

Resultado esperado:

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

Compruebe el estado del flujo de trabajo:

curl -i -X GET $DAPR_URL/v1.0-beta1/workflows/dapr/1234

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

{
  "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.

Pasos siguientes

Aprenda a agregar opciones de configuración a la extensión Dapr en el clúster de AKS.