Udostępnij przez


Wdrażanie i uruchamianie przepływów pracy za pomocą rozszerzenia Dapr dla usługi Azure Kubernetes Service (AKS)

Dzięki przepływowi pracy języka Dapr można łatwo organizować obsługę komunikatów, zarządzanie stanami i logikę obsługi błędów w różnych mikrousługach. Dapr Workflow może pomóc w tworzeniu długotrwałych, odpornych na uszkodzenia i zachowujących stan aplikacji.

W tym przewodniku użyto podanego przykładu przepływu pracy przetwarzania zamówień w celu:

  • Utwórz usługę Azure Container Registry i klaster usługi AKS dla tego przykładu.
  • Zainstaluj rozszerzenie Dapr w klastrze usługi AKS.
  • Wdróż przykładową aplikację do AKS.
  • Uruchamianie wystąpień przepływu pracy i wykonywanie zapytań przy użyciu wywołań interfejsu API PROTOKOŁU HTTP.

Przykładowy przepływ pracy to projekt ASP.NET Core z:

Prerequisites

Konfigurowanie środowiska

Klonowanie przykładowego projektu

Sklonuj przykładową aplikację przepływu pracy.

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

Przejdź do katalogu głównego przykładu.

cd dapr-workflows-aks-sample

Tworzenie klastra Kubernetes

Utwórz grupę zasobów, aby pomieścić klaster AKS.

az group create --name myResourceGroup --location eastus

Utwórz klaster Azure Kubernetes Service (AKS).

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

Upewnij się, że kubectl jest zainstalowany i skonfigurowany do współpracy z twoim klastrem AKS. Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane.

Aby uzyskać więcej informacji, zobacz samouczek Wdrażanie klastra usługi AKS .

Wdrażaj aplikację do AKS

Instalowanie narzędzia Dapr w klastrze usługi AKS

Zainstaluj rozszerzenie Dapr w klastrze usługi AKS. Przed rozpoczęciem upewnij się, że masz następujące elementy:

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

Po upływie kilku minut zobaczysz dane wyjściowe przedstawiające połączenie Dapr z twoim klastrem AKS. Następnie zainicjuj Dapr w klastrze.

dapr init -k

Sprawdź, czy język Dapr jest zainstalowany:

kubectl get pods -A

Zaimplementuj komponent magazynu stanów dla aktora Redis

Przejdź do katalogu Deploy w sforkowanej wersji przykładu.

cd Deploy

Wdróż składnik Redis:

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

Uruchamianie aplikacji

Po wdrożeniu Redis, wdróż aplikację na AKS.

kubectl apply -f deployment.yaml

Uwidocznij przyczepkę Dapr i przykładową aplikację:

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

Sprawdź, czy powyższe polecenia zostały wyeksportowane:

echo $APP_URL
echo $DAPR_URL

Uruchamianie przepływu pracy

Teraz, po wdrożeniu aplikacji i frameworka Dapr w klastrze AKS, możesz uruchamiać wystąpienia przepływu pracy i wykonywać zapytania. Uzupełnij zapasy elementów w spisie przy użyciu następującego wywołania interfejsu API do przykładowej aplikacji:

curl -X GET $APP_URL/stock/restock

Uruchom przepływ pracy:

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

Oczekiwane dane wyjściowe zawierają identyfikator wystąpienia generowanego automatycznie:

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

Sprawdź stan przepływu pracy:

curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
  -H "dapr-app-id: dwf-app"

Oczekiwane dane wyjściowe:

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

Monitorowanie dzienników aplikacji:

kubectl logs -l run=workflows-sample -c workflows-sample --tail=20

Oczekiwane dane wyjściowe:

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

Zwróć uwagę, że stan przepływu pracy jest oznaczony jako ukończony.

Dalsze kroki