Azure Kubernetes Service (AKS) 用の Dapr 拡張機能を使用してワークフローをデプロイして実行する
Dapr Workflow を使用すると、さまざまなマイクロサービス間でメッセージング、状態管理、およびエラー処理ロジックを簡単に調整できます。 Dapr Workflow は、実行時間の長い、フォールト トレラントなステートフル アプリケーションを作成するのに役立ちます。
このガイドでは、提供されている注文処理ワークフローの例を使用して、次の操作を行います。
- このサンプルの Azure Container Registry と AKS クラスターを作成します。
- AKS クラスターに Dapr 拡張機能をインストールします。
- サンプル アプリケーションを AKS にデプロイします。
- HTTP API 呼び出しを使用してワークフロー インスタンスを開始し、クエリを実行します。
ワークフローの例は、次を含む ASP.NET Core プロジェクトです。
- ワークフローとワークフロー アクティビティの登録を始めとする、アプリのセットアップを含む
Program.cs
ファイル。 Workflows
ディレクトリ内にあるワークフロー定義。Activities
ディレクトリ内にあるワークフロー アクティビティ定義。
Note
Dapr Workflow は現在、ベータの機能であり、セルフサービスのオプトイン ベースです。 Beta Dapr API とコンポーネントは、"現状有姿のまま" および "利用可能な限度" で提供され、安定した状態に向かって絶えず進化しています。 Beta 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 にアプリケーションをデプロイする
AKS クラスターに Dapr をインストールする
AKS クラスターに Dapr 拡張機能をインストールします。 開始する前に、以下を用意してください。
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 Actor 状態ストア コンポーネントをデプロイする
フォーク済みバージョンのサンプルで 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}"
}
ワークフローの状態が完了としてマークされていることに注目してください。
次のステップ
Azure Kubernetes Service