Compartilhar via


Implantar e executar fluxos de trabalho com a extensão do Dapr para o Serviço de Kubernetes do Azure (AKS)

Com o Fluxo de Trabalho do Dapr, você pode facilmente orquestrar mensagens, gerenciamento de estado e lógica de tratamento de falhas em vários microsserviços. O Fluxo de Trabalho do Dapr pode ajudá-lo a criar aplicativos de execução longa, tolerantes a falhas e dinâmicos.

Neste guia, você usa o exemplo de fluxo de trabalho de processamento de pedidos fornecido para:

  • Criar um Registro de Contêiner do Azure e um cluster do AKS para este exemplo.
  • Instalar a extensão do Dapr no cluster do AKS.
  • Implantar o aplicativo de exemplo no AKS.
  • Iniciar e consultar instâncias de fluxo de trabalho usando chamadas à API HTTP.

O exemplo de fluxo de trabalho é um projeto ASP.NET Core com:

  • Um arquivo Program.csque contém a configuração do aplicativo, incluindo o registro do fluxo de trabalho e das atividades do fluxo de trabalho.
  • Definições de fluxo de trabalho encontradas no diretório Workflows.
  • Definições de atividade de fluxo de trabalho encontradas no diretório Activities.

Observação

Atualmente, o Fluxo de Trabalho do Dapr é um recurso beta que funciona por autoatendimento e aceitação. As APIs e os componentes beta do Dapr são fornecidos “no estado em que se encontram” e “conforme disponíveis” e evoluem continuamente à medida que chegam a um status estável. As APIs e os componentes beta não são cobertos pelo atendimento ao cliente.

Pré-requisitos

Configurar o ambiente

Clone o projeto de exemplo

Clone o aplicativo de fluxo de trabalho de exemplo.

git clone https://github.com/Azure/dapr-workflows-aks-sample.git

Vá até o diretório raiz de exemplo.

cd dapr-workflows-aks-sample

Criar um cluster do Kubernetes

Crie um grupo de recursos para conter o cluster do AKS.

az group create --name myResourceGroup --location eastus

Criar um cluster do AKS.

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys 

Verifique se kubectl está instalado e apontado para o cluster do AKS. Se você usa o Azure Cloud Shell, o kubectl já estará instalado.

Para obter mais informações, confira o tutorial Implantar um cluster do AKS.

Implantar o aplicativo no AKS

Instalar o Dapr no cluster do AKS

Instalar a extensão do Dapr no cluster do AKS. Antes de começar, verifique se você tem estes itens:

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

Verifique se o Dapr está instalado:

kubectl get pods -A

Implante o componente de repositório de estado do Redis Actor

Navegue até o diretório Deploy em sua versão bifurcada do exemplo:

cd Deploy

Implante o componente Redis:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml

Executar o aplicativo

Depois que o Redis for implantado, implante o aplicativo no AKS:

kubectl apply -f deployment.yaml

Exponha o sidecar do Dapr e o aplicativo de exemplo:

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}')

Verifique se os comandos acima foram exportados:

echo $APP_URL
echo $DAPR_URL

Iniciar o fluxo de trabalho

Agora que o aplicativo e o Dapr estão implantados no cluster do AKS, você pode começar a consultar instâncias de fluxo de trabalho. Reabasteça os itens no inventário usando a seguinte chamada à API ao aplicativo de exemplo:

curl -X GET $APP_URL/stock/restock

Inicie o fluxo de trabalho:

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}}'

Saída esperada:

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

Verifique o status do fluxo de trabalho:

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

Saída esperada:

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 o status do fluxo de trabalho está marcado como concluído.

Próximas etapas