التشغيل السريع: تشغيل عمليات Azure IoT في GitHub Codespaces باستخدام K3s
في هذا التشغيل السريع، يمكنك نشر عمليات Azure IoT إلى مجموعة Kubernetes التي تدعم Azure Arc بحيث يمكنك إدارة أجهزتك وأحمال العمل عن بعد. في نهاية التشغيل السريع، لديك مجموعة يمكنك إدارتها من السحابة. تعتمد بقية عمليات التشغيل السريع في هذه السلسلة الشاملة على هذه السلسلة لتحديد نماذج الأصول وتدفقات معالجة البيانات والمرئيات.
قبل البدء
تهدف هذه السلسلة من عمليات التشغيل السريع إلى مساعدتك على البدء في عمليات Azure IoT في أسرع وقت ممكن بحيث يمكنك تقييم سيناريو شامل. في بيئة تطوير أو إنتاج حقيقية، تقوم فرق متعددة تعمل معا بتنفيذ هذه المهام وقد تتطلب بعض المهام أذونات مرتفعة.
للحصول على أفضل تجربة مستخدم جديدة، نوصي باستخدام حساب Azure المجاني بحيث يكون لديك أذونات المالك على الموارد في هذه قوالب التشغيل السريع.
نستخدم أيضا GitHub Codespaces كبيئة ظاهرية لهذا التشغيل السريع بحيث يمكنك اختبار السيناريو دون تثبيت أدوات جديدة على أجهزتك الخاصة. ومع ذلك، إذا كنت ترغب في نشر عمليات Azure IoT إلى مجموعة محلية على Ubuntu أو Azure Kubernetes Service (AKS)، فشاهد إعداد مجموعة Kubernetes الممكنة في Azure Arc.
هام
حاليا، K3s على Ubuntu 24.04 هو النظام الأساسي الوحيد المتاح بشكل عام لنشر عمليات Azure IoT في الإنتاج. لمعرفة المزيد، راجع البيئات المدعومة.
المتطلبات الأساسية
قبل البدء، قم بإعداد المتطلبات الأساسية التالية:
اشتراك Azure. إذا لم يكن لديك اشتراك Azure، فأنشئ اشتراكاً مجاناً قبل البدء.
حساب GitHub.
Visual Studio Code مثبت على جهاز التطوير الخاص بك. لمزيد من المعلومات، راجع تنزيل Visual Studio Code.
أذونات Microsoft.Authorization/roleAssignments/write على مستوى مجموعة الموارد.
ما هي المشكلة التي سنحلها؟
عمليات Azure IoT هي مجموعة من خدمات البيانات التي تعمل على مجموعات Kubernetes. تريد إدارة هذه المجموعات عن بعد من السحابة، والقدرة على التواصل بأمان مع موارد السحابة ونقاط النهاية. نحن نعالج هذه المخاوف مع المهام التالية في هذا التشغيل السريع:
- إنشاء مجموعة Kubernetes في GitHub Codespaces.
- قم بتوصيل نظام المجموعة ب Azure Arc للإدارة عن بعد.
- إنشاء سجل مخطط.
- توزيع عمليات Azure IoT إلى نظام المجموعة.
إنشاء نظام المجموعة
يمكن نشر عمليات Azure IoT إلى K3s على Ubuntu وAzure Kubernetes Service (AKS) Edge Essentials وAKS على Azure Local. ومع ذلك، من أجل السرعة والراحة، يستخدم هذا التشغيل السريع GitHub Codespaces لاستضافة مجموعتك. لمعرفة كيفية نشر عمليات Azure IoT إلى نظام مجموعة على Windows أو Ubuntu بدلا من ذلك، راجع إعداد مجموعة Kubernetes الممكنة في Azure Arc.
إشعار
من السهل إعداد مساحات التعليمات البرمجية بسرعة وهدمها لاحقا، ولكنها غير مناسبة لتقييم الأداء أو اختبار المقياس. استخدم GitHub Codespaces للاستكشاف فقط.
بيئة Codespaces كافية لإكمال خطوات التشغيل السريع، ولكنها لا تدعم التكوينات المتقدمة.
في هذا القسم، يمكنك إنشاء نظام مجموعة جديد. إذا كنت ترغب في إعادة استخدام نظام مجموعة قمت بنشر عمليات Azure IoT إليه سابقا، فراجع الخطوات الواردة في تنظيف الموارد لإلغاء تثبيت عمليات Azure IoT قبل المتابعة.
تم تكوين مساحة التعليمات البرمجية Azure-Samples/explore-iot-operations مسبقا باستخدام:
- K3s قيد التشغيل في K3d لمجموعة Kubernetes خفيفة الوزن
- Azure CLI
- Kubectl لإدارة موارد Kubernetes
- أدوات مفيدة أخرى مثل Helm وk9s
لإنشاء مساحة التعليمات البرمجية والمجموعة، استخدم الخطوات التالية:
إنشاء مساحة تعليمات برمجية في GitHub Codespaces.
قم بتوفير الأسرار الموصى بها التالية لمساحة التعليمات البرمجية الخاصة بك:
المعلمة القيمة SUBSCRIPTION_ID معرّف اشتراك Azure. RESOURCE_GROUP اسم لمجموعة موارد Azure جديدة حيث سيتم إنشاء نظام المجموعة الخاص بك. الموقع منطقة Azure قريبة منك. للحصول على قائمة المناطق المدعومة حاليا، راجع المناطق المدعومة. تلميح
يتم حفظ القيم التي تقدمها كأسرار في هذه الخطوة على حساب GitHub الخاص بك لاستخدامها في مساحات التعليمات البرمجية هذه والمستقبلية. تتم إضافتها كمتغيرات بيئة في الوحدة الطرفية لمساحة التعليمات البرمجية، ويمكنك استخدام متغيرات البيئة هذه في أوامر CLI في القسم التالي.
بالإضافة إلى ذلك، تنشئ مساحة التعليمات البرمجية
CLUSTER_NAME
هذه متغير بيئة يتم تعيينه باسم مساحة التعليمات البرمجية.حدد Create new codespace.
بمجرد أن تصبح مساحة التعليمات البرمجية جاهزة، حدد زر القائمة في أعلى اليسار، ثم حدد Open in VS Code Desktop.
إذا طلب منك ذلك، قم بتثبيت ملحق GitHub Codespaces ل Visual Studio Code وسجل الدخول إلى GitHub.
في Visual Studio Code، حدد View>Terminal.
استخدم هذه المحطة الطرفية لتشغيل جميع أوامر CLI لإدارة نظام المجموعة.
توصيل نظام المجموعة ب Azure Arc
لتوصيل مجموعتك ب Azure Arc:
في الوحدة الطرفية لمساحة التعليمات البرمجية، سجل الدخول إلى Azure CLI:
az login
تلميح
إذا كنت تستخدم بيئة مساحة التعليمات البرمجية GitHub في مستعرض بدلا من سطح مكتب VS Code، فإن التشغيل
az login
يرجع خطأ localhost. لإصلاح الخطأ، إما:- افتح مساحة التعليمات البرمجية في VS Code لسطح المكتب، ثم ارجع إلى محطة المتصفح وأعد تشغيل
az login
. - أو، بعد أن تحصل على خطأ المضيف المحلي على المتصفح، انسخ عنوان URL من المتصفح وقم بتشغيله
curl "<URL>"
في علامة تبويب محطة طرفية جديدة. يجب أن تشاهد استجابة JSON مع الرسالة "لقد قمت بتسجيل الدخول إلى Microsoft Azure!".
- افتح مساحة التعليمات البرمجية في VS Code لسطح المكتب، ثم ارجع إلى محطة المتصفح وأعد تشغيل
بعد تسجيل الدخول، يعرض Azure CLI جميع اشتراكاتك ويشير إلى اشتراكك الافتراضي بعلامة نجمية
*
. لمتابعة اشتراكك الافتراضي، حددEnter
. وإلا، اكتب عدد اشتراك Azure الذي تريد استخدامه.تسجيل موفري الموارد المطلوبين في اشتراكك:
إشعار
يجب تشغيل هذه الخطوة مرة واحدة فقط لكل اشتراك. لتسجيل موفري الموارد، تحتاج إلى إذن للقيام بالعملية
/register/action
، والتي يتم تضمينها في أدوار المساهم والمالك للاشتراك. لمزيد من المعلومات، راجع موفري موارد Azure وأنواعها.az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperations" az provider register -n "Microsoft.DeviceRegistry" az provider register -n "Microsoft.SecretSyncController"
استخدم الأمر az group create لإنشاء مجموعة موارد في اشتراك Azure لتخزين جميع الموارد:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP
استخدم الأمر az connectedk8s connect إلى Arc-enable نظام مجموعة Kubernetes وإدارته كجزء من مجموعة موارد Azure:
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
تلميح
يتم تعيين قيمة
$CLUSTER_NAME
تلقائيا إلى اسم مساحة التعليمات البرمجية الخاصة بك. استبدل متغير البيئة إذا كنت تريد استخدام اسم مختلف.احصل على
objectId
تطبيق معرف Microsoft Entra الذي تستخدمه خدمة Azure Arc في المستأجر الخاص بك واحفظه كمتغير بيئة. قم بتشغيل الأمر التالي تماما كما هو مكتوب، دون تغيير قيمة GUID.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
استخدم الأمر az connectedk8s enable-features لتمكين دعم الموقع المخصص على مجموعتك. يستخدم
objectId
هذا الأمر تطبيق معرف Microsoft Entra الذي تستخدمه خدمة Azure Arc. قم بتشغيل هذا الأمر على الجهاز حيث قمت بنشر مجموعة Kubernetes:az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
إنشاء حساب تخزين وسجل مخطط
سجل المخطط هو مستودع متزامن يخزن تعريفات الرسائل في كل من السحابة وعلى الحافة. تتطلب عمليات Azure IoT سجل مخطط على نظام المجموعة الخاص بك. يتطلب سجل المخطط حساب تخزين Azure لمعلومات المخطط المخزنة في السحابة.
يتطلب الأمر لإنشاء سجل مخطط في هذا القسم إذن Microsoft.Authorization/roleAssignments/write على مستوى مجموعة الموارد. يتم استخدام هذا الإذن لمنح سجل المخطط دور مساهم بحيث يمكنه الكتابة إلى حساب التخزين.
قم بتشغيل أوامر CLI التالية في محطة Codespaces الطرفية.
تعيين متغيرات البيئة للموارد التي تقوم بإنشائها في هذا القسم.
Placeholder القيمة <STORAGE_ACCOUNT_NAME> اسم لحساب التخزين. يجب أن يتراوح طول أسماء حسابات التخزين بين 3 و24 حرفا وأن تحتوي فقط على أرقام وأحرف صغيرة. <SCHEMA_REGISTRY_NAME> اسم لسجل المخطط الخاص بك. يمكن أن تحتوي أسماء تسجيل المخططات على أرقام وأحرف صغيرة وواصلات فقط. <SCHEMA_REGISTRY_NAMESPACE> اسم لمساحة اسم سجل المخطط. تعرف مساحة الاسم بشكل فريد سجل مخطط داخل المستأجر. يمكن أن تحتوي أسماء مساحة اسم سجل المخطط على أرقام وأحرف صغيرة وواصلات فقط. STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME> SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME> SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
إنشاء حساب تخزين مع تمكين مساحة اسم هرمية.
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
إنشاء سجل مخطط يتصل بحساب التخزين الخاص بك. ينشئ هذا الأمر أيضا حاوية كائن ثنائي كبير الحجم تسمى المخططات في حساب التخزين.
az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
توزيع عمليات Azure IoT
في هذا القسم، يمكنك تكوين نظام المجموعة الخاص بك مع التبعيات لمكونات عمليات Azure IoT، ثم توزيع عمليات Azure IoT.
قم بتشغيل أوامر CLI التالية في محطة Codespaces الطرفية.
تهيئة نظام المجموعة لعمليات Azure IoT.
تلميح
init
يجب تشغيل الأمر مرة واحدة فقط لكل نظام مجموعة. إذا كنت تعيد استخدام نظام مجموعة تم نشر أحدث إصدار من عمليات Azure IoT عليه بالفعل، يمكنك تخطي هذه الخطوة.az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
قد يستغرق هذا الأمر عدة دقائق ليكتمل. يمكنك مشاهدة التقدم في عرض تقدم التوزيع في المحطة الطرفية.
توزيع عمليات Azure IoT.
az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1 --broker-backend-part 1 --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
قد يستغرق هذا الأمر عدة دقائق ليكتمل. يمكنك مشاهدة التقدم في عرض تقدم التوزيع في المحطة الطرفية.
إذا تلقيت رسالة خطأ تفيد بأن جهازك مطلوب لإدارته للوصول إلى موردك، فقم بتشغيله
az login
مرة أخرى وتأكد من تسجيل الدخول بشكل تفاعلي باستخدام مستعرض.
عرض الموارد في نظام المجموعة
بمجرد اكتمال النشر، يمكنك استخدام أوامر kubectl لمراقبة التغييرات على نظام المجموعة أو، نظرا لأن نظام المجموعة ممكن على Arc، يمكنك استخدام مدخل Azure.
لعرض pods على نظام المجموعة، قم بتشغيل الأمر التالي:
kubectl get pods -n azure-iot-operations
لعرض مواردك على مدخل Microsoft Azure، استخدم الخطوات التالية:
في مدخل Microsoft Azure، انتقل إلى مجموعة الموارد التي تحتوي على مثيل عمليات Azure IoT أو ابحث عن Azure IoT Operations وحددها.
حدد اسم مثيل عمليات Azure IoT.
في صفحة Overview للمثيل الخاص بك، حدد علامة التبويب Resource summary لعرض حالة التوفير للموارد التي تم نشرها في نظام المجموعة الخاص بك.
كيف قمنا بحل المشكلة؟
في هذا التشغيل السريع، قمت بتكوين مجموعة Kubernetes الممكنة بواسطة Arc بحيث يمكنها الاتصال بأمان بمكونات عمليات Azure IoT. بعد ذلك، قمت بنشر هذه المكونات إلى نظام المجموعة الخاص بك. بالنسبة لسيناريو الاختبار هذا، لديك مجموعة Kubernetes واحدة تعمل في Codespaces. ومع ذلك، في سيناريو الإنتاج، يمكنك استخدام نفس الخطوات لنشر أحمال العمل إلى العديد من المجموعات عبر العديد من المواقع.
تنظيف الموارد
إذا كنت تستمر في التشغيل السريع التالي، فاحتفظ بكافة مواردك.
إذا كنت ترغب في إزالة نشر عمليات Azure IoT مع الاحتفاظ بالمجموعة الخاصة بك، فاستخدم الأمر az iot ops delete :
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
إذا كنت ترغب في حذف جميع الموارد التي قمت بإنشائها لهذا التشغيل السريع، فاحذف مجموعة Kubernetes حيث قمت بنشر عمليات Azure IoT ثم قم بإزالة مجموعة موارد Azure التي تحتوي على نظام المجموعة.
إذا استخدمت Codespaces لهذه قوالب التشغيل السريع، فاحذف Codespace من GitHub.