Azure Kubernetes Service (AKS) 用の Dapr 拡張機能を使用してワークフローをデプロイして実行する

Dapr Workflow を使用すると、さまざまなマイクロサービス間でメッセージング、状態管理、およびエラー処理ロジックを簡単に調整できます。 Dapr Workflow は、実行時間の長い、フォールト トレラントなステートフル アプリケーションを作成するのに役立ちます。

このガイドでは、提供されている注文処理ワークフローの例を使用して、次の操作を行います。

  • このサンプルの Azure Container Registry と AKS クラスターを作成します。
  • AKS クラスターに Dapr 拡張機能をインストールします。
  • サンプル アプリケーションを AKS にデプロイします。
  • HTTP API 呼び出しを使用してワークフロー インスタンスを開始し、クエリを実行します。

ワークフローの例は、次を含む ASP.NET Core プロジェクトです。

Note

Dapr Workflow は現在、ベータの機能であり、セルフサービスのオプトイン ベースです。 Beta Dapr API とコンポーネントは、"現状有姿のまま" および "利用可能な限度" で提供され、安定した状態に向かって絶えず進化しています。 Beta API とコンポーネントは、カスタマー サポートの対象外です。

前提条件

環境をセットアップする

サンプル プロジェクトをクローンする

ワークフロー アプリケーションの例を複製します。

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

ワークフローの状態が完了としてマークされていることに注目してください。

次のステップ

AKS クラスターの Dapr 拡張機能に構成設定を追加する方法について説明します