Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Com o Dapr Workflow, você pode orquestrar facilmente mensagens, gerenciamento de estado e lógica de tratamento de falhas em vários microsserviços. O Dapr Workflow pode ajudá-lo a criar aplicativos de longa execução, tolerantes a falhas e com monitoração de estado.
Neste guia, utiliza o exemplo fornecido de fluxo de processamento de encomendas para:
- Crie um Registro de Contêiner do Azure e um cluster AKS para este exemplo.
- Instale a extensão Dapr no seu cluster AKS.
- Implante o aplicativo de exemplo no AKS.
- Inicie e consulte instâncias de fluxo de trabalho usando chamadas de API HTTP.
O exemplo de fluxo de trabalho é um projeto ASP.NET Core com:
- Um
Program.csficheiro que contém a configuração da aplicação, incluindo o registo do fluxo de trabalho e das atividades. - Definições de workflow encontradas no
Workflowsdiretório. - Definições de atividade de workflow encontradas no
Activitiesdiretório.
Pré-requisitos
- Uma assinatura do Azure com função de Proprietário ou Administrador.
- Função de Administrador de Controlo de Acesso Baseado em Funções no Azure Kubernetes Service
- A versão mais recente da CLI do Azure
- A versão mais recente do Dapr
- Docker mais recente
- Mais recente Helm
Configurar o ambiente
Clone o projeto de exemplo
Clone o aplicativo de fluxo de trabalho de exemplo.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Navegue até o diretório raiz do exemplo.
cd dapr-workflows-aks-sample
Criar um cluster do Kubernetes
Crie um grupo de recursos para manter o cluster AKS.
az group create --name myResourceGroup --location eastus
Crie um cluster AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Certifique-se de que kubectl está instalado e apontado para o seu cluster AKS. Se utilizar o Azure Cloud Shell, o kubectl já está instalado.
Para obter mais informações, consulte o tutorial Implantar um cluster AKS.
Implantar o aplicativo no AKS
Instale o Dapr no seu cluster AKS
Instale a extensão Dapr no seu cluster AKS. Antes de começar, certifique-se de que:
-
Instalado ou atualizado o
k8s-extension. -
Registado o
Microsoft.KubernetesConfigurationprestador de serviços
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr
Após alguns minutos, verá mostrada a saída da conexão Dapr ao seu cluster AKS. De seguida, inicia o Dapr no teu cluster.
dapr init -k
Verifique se o Dapr está instalado:
kubectl get pods -A
Implantar o componente de armazenamento de estado do Ator Redis
Navegue até o Deploy diretório 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 a aplicação
Depois que o Redis for implantado, implante o aplicativo no AKS:
kubectl apply -f deployment.yaml
Exponha o sidecar 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 AKS, agora você pode iniciar e consultar instâncias de fluxo de trabalho. Reabasteça itens no inventário usando a seguinte chamada de API para o aplicativo de exemplo:
curl -X GET $APP_URL/stock/restock
Inicie o fluxo de trabalho:
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}'
A saída esperada inclui um ID de instância gerado automaticamente:
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>"}
Verifique o status do fluxo de trabalho:
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
Monitorizar os registos de aplicação:
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 o status do fluxo de trabalho está marcado como concluído.