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. Przepływ pracy języka Dapr może pomóc w tworzeniu długotrwałych, odpornych na uszkodzenia i stanowych 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ę w usłudze 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:
Program.cs
Plik zawierający konfigurację aplikacji, w tym rejestrację działań przepływu pracy i przepływu pracy.- Definicje przepływu pracy znalezione w
Workflows
katalogu. - Definicje działań przepływu pracy znalezione w
Activities
katalogu.
Uwaga
Dapr Workflow jest obecnie funkcją beta i jest na zasadzie samoobsługi. Interfejsy API i składniki języka Dapr w wersji beta są dostarczane "tak, jak jest" i "jako dostępne", i stale ewoluują w miarę przechodzenia do stabilnego stanu. Interfejsy API i składniki beta nie są objęte pomocą techniczną.
Wymagania wstępne
- Subskrypcja platformy Azure z rolą właściciela lub administratora.
- Najnowsza wersja interfejsu wiersza polecenia platformy Azure
- Najnowsza wersja platformy Docker
- Najnowsze narzędzie Helm
Konfigurowanie środowiska
Klonowanie przykładowego projektu
Sklonuj przykładowej aplikacji przepływu pracy.
git clone https://github.com/Azure/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 do przechowywania klastra usługi AKS.
az group create --name myResourceGroup --location eastus
Utwórz klaster usługi AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Upewnij się, że kubectl
jest zainstalowany i wskazywany na klaster usługi 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żanie aplikacji w usłudze 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:
- Zainstalowano lub zaktualizowano element
k8s-extension
. - Zarejestrowano dostawcę
Microsoft.KubernetesConfiguration
usług
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr
Sprawdź, czy język Dapr jest zainstalowany:
kubectl get pods -A
Wdrażanie składnika magazynu stanów aktora Redis
Przejdź do Deploy
katalogu w rozwidlonej 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 usługi Redis wdróż aplikację w usłudze 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 języka Dapr w klastrze usługi AKS, możesz teraz 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-beta1/workflows/dapr/OrderProcessingWorkflow/start?instanceID=1234 \
-H "Content-Type: application/json" \
-d '{ "input" : {"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}}'
Oczekiwane dane wyjściowe:
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
Sprawdź stan przepływu pracy:
curl -i -X GET $DAPR_URL/v1.0-beta1/workflows/dapr/1234
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
{
"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.
Następne kroki
Azure Kubernetes Service