تشغيل سريع: نشر تطبيق باستخدام ملحق مجموعة Dapr لخدمة Azure Kubernetes (AKS) أو Kubernetes التي تدعم Arc
في هذا التشغيل السريع، يمكنك استخدام ملحق نظام مجموعة Dapr في نظام مجموعة Kubernetes الذي يدعم AKS أو Arc. يمكنك نشر hello world
مثال، والذي يتكون من تطبيق Python الذي ينشئ رسائل وتطبيق عقدة يستهلك الرسائل ويستمر فيها.
المتطلبات الأساسية
- اشتراك Azure. إذا لم يكن لديك اشتراك Azure، يمكنك إنشاء حساب مجاني.
- تثبيت Azure CLI أوAzure PowerShell.
- نظام مجموعة Kubernetes ممكن بواسطة AKS أو Arc مع تمكين ملحق نظام مجموعة Dapr.
نسخ المستودع
استنساخ مستودع التشغيل السريع ل Dapr باستخدام
git clone
الأمر .git clone https://github.com/dapr/quickstarts.git
قم بالتغيير
hello-kubernetes
إلى الدليل باستخدامcd
.cd quickstarts/tutorials/hello-kubernetes/
إنشاء مخزن حالة وتكوينه
يمكن ل Dapr استخدام العديد من مخازن الحالة المختلفة، مثل Redis وAzure Cosmos DB وDynamoDB وCassandra، للاستمرار واسترداد الحالة. على سبيل المثال، نستخدم Redis.
إنشاء مخزن Redis
املأ المعلومات الضرورية.
حدد Create لبدء نشر مثيل Redis.
لاحظ اسم مضيف مثيل Redis الخاص بك، والذي يمكنك استرداده من قسم Overview في Azure. قد يكون اسم المضيف مشابها للمثال التالي:
xxxxxx.redis.cache.windows.net:6380
.ضمن الإعدادات، انتقل إلى مفاتيح الوصول للحصول على مفاتيح الوصول.
إنشاء سر Kubernetes لتخزين كلمة مرور Redis باستخدام
kubectl create secret generic redis
الأمر .kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
تكوين مكونات Dapr
بمجرد إنشاء متجرك، تحتاج إلى إضافة المفاتيح إلى redis.yaml
الملف في دليل توزيع مستودع مرحبًا بالعالم. يمكنك معرفة المزيد هنا.
redisHost
استبدل القيمة بعنوان Redis الرئيسي الخاص بك.redisPassword
استبدل ب سرك الخاص.أضف الخطين التاليين أدناه
redisPassword
لتمكين الاتصال عبر TLS- name: redisPassword secretKeyRef: name: redis key: redis-password - name: enableTLS value: true
تطبيق التكوين
redis.yaml
تطبيق الملف باستخدامkubectl apply
الأمر .kubectl apply -f ./deploy/redis.yaml
تحقق من تكوين مخزن الحالة بنجاح باستخدام
kubectl get components.redis
الأمر .kubectl get components.redis -o yaml
يجب أن تشاهد إخراجا مشابها لإخراج المثال التالي:
component.dapr.io/statestore created
نشر التطبيق Node.js مع Dapr الجانبي
تطبيق نشر تطبيق Node.js على نظام المجموعة باستخدام
kubectl apply
الأمر .kubectl apply -f ./deploy/node.yaml
إشعار
عمليات توزيع Kubernetes غير متزامنة، ما يعني أنك بحاجة إلى انتظار اكتمال النشر قبل الانتقال إلى الخطوات التالية. يمكنك القيام بذلك باستخدام الأمر التالي:
kubectl rollout status deploy/nodeapp
يؤدي هذا إلى نشر تطبيق Node.js إلى Kubernetes. تقوم وحدة التحكم Dapr تلقائيا بحقن سيارة Dapr الجانبية إلى الجراب. إذا ألقيت نظرة على
node.yaml
الملف، فسترى كيفية تمكين Dapr لهذا النشر:dapr.io/enabled: true
: يخبر وحدة تحكم Dapr بإدخال سيارة جانبية في هذا النشر.dapr.io/app-id: nodeapp
: يعين معرفا أو اسما فريدا لتطبيق Dapr، بحيث يمكن إرسال رسائل إليه والتواصل معه بواسطة تطبيقات Dapr الأخرى.
الوصول إلى الخدمة باستخدام
kubectl get svc
الأمر .kubectl get svc nodeapp
دون ملاحظة في
EXTERNAL-IP
الإخراج.
تحقق من الخدمة
اتصل بالخدمة باستخدام
curl
مع .EXTERNAL-IP
curl $EXTERNAL_IP/ports
يجب أن تشاهد إخراجا مشابها لإخراج المثال التالي:
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
إرسال طلب إلى التطبيق باستخدام
curl
.curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
تأكد من استمرار الطلب عن طريق طلبه باستخدام
curl
.curl $EXTERNAL_IP/order
يجب أن تشاهد إخراجا مشابها لإخراج المثال التالي:
{ "orderId": "42" }
نشر التطبيق Python باستخدام Dapr sidecar
انتقل إلى دليل التطبيق Python في
hello-kubernetes
التشغيل السريع والفتحapp.py
.هذا المثال هو تطبيق Python أساسي ينشر رسائل JSON إلى
localhost:3500
، وهو منفذ الاستماع الافتراضي ل Dapr. يمكنك استدعاء نقطة نهاية التطبيق Node.jsneworder
عن طريق الترحيل إلىv1.0/invoke/nodeapp/method/neworder
. تحتوي الرسالة على بعض البياناتorderId
التي تزيد مرة واحدة في الثانية:n = 0 while True: n += 1 message = {"data": {"orderId": n}} try: response = requests.post(dapr_url, json=message) except Exception as e: print(e) time.sleep(1)
نشر تطبيق Python إلى مجموعة Kubernetes باستخدام
kubectl apply
الأمر .kubectl apply -f ./deploy/python.yaml
إشعار
كما هو الحال مع الأمر السابق، تحتاج إلى انتظار اكتمال النشر قبل الانتقال إلى الخطوات التالية. يمكنك القيام بذلك باستخدام الأمر التالي:
kubectl rollout status deploy/pythonapp
مراقبة الرسائل وتأكيد المثابرة
الآن بعد نشر كل من تطبيقي Node.js وPython، يمكنك مشاهدة الرسائل تأتي من خلالها.
احصل على سجلات تطبيق Node.js باستخدام
kubectl logs
الأمر .kubectl logs --selector=app=node -c node --tail=-1
إذا كانت عمليات النشر ناجحة، يجب أن تشاهد سجلات مثل سجلات المثال التالية:
Got a new order! Order ID: 1 Successfully persisted state Got a new order! Order ID: 2 Successfully persisted state Got a new order! Order ID: 3 Successfully persisted state
اتصل بنقطة نهاية طلب تطبيق Node.js للحصول على أحدث طلب باستخدام
curl
.curl $EXTERNAL_IP/order {"orderID":"42"}
يجب أن تشاهد أحدث JSON في الاستجابة.
تنظيف الموارد
قم بإزالة مجموعة الموارد، الكتلة، مساحة الاسم، وجميع الموارد ذات الصلة باستخدام الأمر az group delete .
az group delete --name MyResourceGroup
الخطوات التالية
تعرف على المزيد حول ملحقات نظام المجموعة الأخرى.