Bagikan melalui


Menyebarkan dan menjalankan alur kerja dengan ekstensi Dapr untuk Azure Kubernetes Service (AKS)

Dengan Dapr Workflow, Anda dapat dengan mudah mengatur logika olahpesan, manajemen status, dan penanganan kegagalan di berbagai layanan mikro. Alur Kerja Dapr dapat membantu Anda membuat aplikasi yang berjalan lama, toleran terhadap kesalahan, dan stateful.

Dalam panduan ini, Anda menggunakan contoh alur kerja pemrosesan pesanan yang disediakan untuk:

  • Buat Azure Container Registry dan kluster AKS untuk sampel ini.
  • Instal ekstensi Dapr pada kluster AKS Anda.
  • Sebarkan aplikasi sampel ke AKS.
  • Mulai dan kueri instans alur kerja menggunakan panggilan API HTTP.

Contoh alur kerja adalah proyek ASP.NET Core dengan:

Prerequisites

Menyiapkan lingkungan kerja

Melakukan kloning proyek contoh

Kloning contoh aplikasi alur kerja.

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

Navigasikan ke direktori akar sampel.

cd dapr-workflows-aks-sample

Buatlah kluster Kubernetes

Buat kelompok sumber daya untuk menampung kluster AKS.

az group create --name <your-resource-group> --location eastus

Buat kluster AKS.

az aks create --resource-group <your-resource-group> --name <your-AKS-cluster> --node-count 2 --generate-ssh-keys 

Pastikan kubectl telah diinstal dan ditujukkan ke kluster AKS Anda. Jika Anda menggunakan Azure Cloud Shell, kubectl sudah terpasang.

Untuk informasi selengkapnya, lihat tutorial Menyebarkan kluster AKS .

Menyebarkan aplikasi ke AKS

Menginstal Dapr pada kluster AKS Anda

Instal ekstensi Dapr pada kluster AKS Anda. Sebelum memulai, pastikan Anda:

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

Setelah beberapa menit, output menunjukkan koneksi Dapr ke kluster AKS Anda. Selanjutnya, inisialisasi Dapr pada kluster Anda.

dapr init -k

Verifikasi bahwa Dapr diinstal:

kubectl get pods -A

Menyebarkan komponen penyimpanan status aktor Redis

Masuklah ke direktori Deploy pada versi fork dari sampel yang Anda gunakan.

cd Deploy

Sebarkan komponen Redis:

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

Jalankan aplikasi

Setelah Redis disebarkan, sebarkan aplikasi ke AKS:

kubectl apply -f deployment.yaml

Memaparkan sidecar Dapr dan aplikasi sampel:

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

Verifikasi bahwa perintah di atas diekspor:

echo $APP_URL
echo $DAPR_URL

Memulai alur kerja

Sekarang setelah aplikasi dan Dapr disebarkan ke kluster AKS, Anda sekarang dapat memulai dan mengkueri instans alur kerja. Restock item dalam inventaris menggunakan pemanggilan API berikut ke aplikasi contoh.

curl -X GET $APP_URL/stock/restock

Mulai alur kerja:

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

Output yang diharapkan mencakup ID instans yang dihasilkan secara otomatis:

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

Periksa status alur kerja:

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

Output yang diharapkan:

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

Pantau log aplikasi:

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

Output yang diharapkan:

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

Perhatikan bahwa status alur kerja ditandai sebagai selesai.

Langkah selanjutnya