Поделиться через


Развертывание и запуск рабочих процессов с расширением Dapr для Служба Azure Kubernetes (AKS)

С помощью рабочего процесса Dapr можно легко управлять сообщениями, управлять состоянием и логикой обработки сбоев в различных микрослужбах. Рабочий процесс Dapr поможет вам создавать длительные, отказоустойчивые и отказоустойчивые приложения.

В этом руководстве вы используете приведенный пример рабочего процесса обработки заказа для следующих действий:

  • Создайте Реестр контейнеров Azure и кластер AKS для этого примера.
  • Установите расширение Dapr в кластере AKS.
  • Разверните пример приложения в AKS.
  • Запуск и запрос экземпляров рабочих процессов с помощью вызовов API HTTP.

Пример рабочего процесса — это проект ASP.NET Core с:

  • Program.cs Файл, содержащий настройку приложения, включая регистрацию действий рабочего процесса и рабочего процесса.
  • Определения рабочих процессов, найденные в каталогеWorkflows.
  • Определения действий рабочего процесса, найденные в каталогеActivities.

Примечание.

Рабочий процесс Dapr в настоящее время является бета-функцией и предоставляется самостоятельно. Бета-интерфейсы API и компоненты Dapr предоставляются "как есть" и "как доступно", и постоянно развиваются по мере перехода к стабильному состоянию. Бета-интерфейсы API и компоненты не охватываются поддержкой клиентов.

Необходимые компоненты

  • Подписка Azure с ролью владельца или администратора.
  • последняя версия Azure CLI;
  • Последняя версия Docker
  • Последний Helm

Настройка среды

Клонирование примера проекта

Клонируйте пример приложения рабочего процесса.

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

Перейдите к корневому каталогу примера.

cd dapr-workflows-aks-sample

Создание кластера Kubernetes

Создайте группу ресурсов для хранения кластера AKS.

az group create --name myResourceGroup --location eastus

Создание кластера AKS.

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

Убедитесь, что kubectl установлен и указан кластер AKS. Если вы используете Azure Cloud Shell, kubectl уже установлен.

Дополнительные сведения см. в руководстве по развертыванию кластера AKS.

Развертывание приложения в AKS

Установка Dapr в кластере AKS

Установите расширение Dapr в кластере AKS. Прежде чем начать, убедитесь, что у вас есть:

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

Убедитесь, что dapr установлен:

kubectl get pods -A

Развертывание компонента хранилища состояний Redis Для субъектов

Перейдите к каталогу Deploy в вилку версии примера:

cd Deploy

Разверните компонент Redis:

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

Выполнение приложения

После развертывания Redis разверните приложение в AKS:

kubectl apply -f deployment.yaml

Предопубликуй боковую панель Dapr и пример приложения:

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

Убедитесь, что приведенные выше команды экспортированы:

echo $APP_URL
echo $DAPR_URL

Запуск рабочего процесса

Теперь, когда приложение и Dapr развернуты в кластере AKS, теперь можно запускать и запрашивать экземпляры рабочих процессов. Перезаготовка элементов в инвентаризации с помощью следующего вызова API для примера приложения:

curl -X GET $APP_URL/stock/restock

Запустите рабочий процесс:

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

Ожидаемые выходные данные:

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

Проверьте состояние рабочего процесса:

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

Ожидаемые выходные данные:

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

Обратите внимание, что состояние рабочего процесса отмечено как завершенное.

Следующие шаги