1. مقدمة
تحديد المشاكل وحلّها في عمليات نشر Kubernetes المعطّلة هو جزء شائع ومحبط في كثير من الأحيان من الحياة اليومية لمهندس المنصة. عادةً ما يتطلّب ذلك الكثير من التحقيقات اليدوية، مثل البحث في السجلّات وتشغيل أوامر kubectl describe والرجوع إلى ملفات YAML للعثور على عدم تطابق أو إعدادات غير صحيحة.
على الرغم من أنّ روبوتات الدردشة المستنِدة إلى الذكاء الاصطناعي ذات الأغراض العامة يمكن أن تساعد في شرح المفاهيم أو كتابة الرموز البرمجية الأساسية، إلا أنّها تعمل بشكل مستقل. ولا يعرفون أي شيء عن قاعدة الرموز البرمجية المحدّدة أو الحالة المباشرة للمجموعة، ما يؤدي إلى الكثير من عمليات النسخ واللصق اليدوية وتبديل السياق.
في هذا الدرس التطبيقي، ستتعرّف على كيفية سدّ هذه الفجوة باستخدام أدوات الذكاء الاصطناعي التي توفّر مستويات متزايدة من السياق. ستستخدم Gemini CLI و"بروتوكول سياق النموذج" (MCP) لتحديد المشاكل في تطبيق معطّل على GKE وحلّها. في نهاية هذا الدرس التطبيقي، ستعرف كيفية استخدام الذكاء الاصطناعي الذي يدرك ملفاتك وبنيتك الأساسية لحل المشاكل المعقّدة بشكل أسرع، وكيفية ترميز مسارات العمل هذه في "مهارات" قابلة لإعادة الاستخدام لفريقك.
المفاهيم الأساسية
- هندسة المنصات: هندسة المنصات هي ممارسة إنشاء أدوات ومهام سير عمل داخلية والحفاظ عليها، ما يتيح لمطوّري البرامج إدارة البنية التحتية الخاصة بهم بدون الحاجة إلى أن يكونوا خبراء في كل خدمة سحابية أساسية. والهدف من ذلك هو تقليل المشاكل الفنية مع الحفاظ على الاتساق والأمان. من خلال إنشاء مسار ذهبي موحّد، تضمن فِرق المنصات إمكانية نشر مطوّري التطبيقات بأمان وسرعة، بينما يحتفظ فريق المنصة بالتحكّم في الحوكمة والتكلفة.
- Gemini CLI: هي واجهة سطر أوامر تتيح لك التفاعل مع نماذج Gemini مباشرةً من نافذة الأوامر على جهازك. على عكس روبوت الدردشة العادي المستند إلى الويب، تم تصميم واجهة سطر الأوامر لتكون متاحة ضمن بيئة التطوير، ما يسهّل دمج الذكاء الاصطناعي في سير العمل الحالي المستند إلى shell. يتيح لك توجيه المخرجات من أوامر أخرى مباشرةً إلى النموذج وتنفيذ التعليمات بدون مغادرة الوحدة الطرفية.
- بروتوكول سياق النموذج (MCP): بروتوكول MCP هو معيار مفتوح يتيح لنموذج الذكاء الاصطناعي الاتصال بأدوات أو مصادر بيانات معيّنة. وبدون بروتوكول MCP، لا يعرف نموذج الذكاء الاصطناعي سوى البيانات التي تم تدريبه عليها ولا يمكنه الاطّلاع على مواردك المحدّدة. باستخدام خادم GKE MCP، يمكن لواجهة Gemini CLI الاستعلام بنشاط عن واجهة برمجة التطبيقات لمشروعك على Google Cloud، وفحص حالة المجموعات، وتنفيذ الأوامر نيابةً عنك. ويعمل كجسر بين محرك الاستدلال الخاص بالنموذج وواجهة برمجة التطبيقات الفعلية في GKE.
- مهارات الوكيل: المهارات هي حِزم من التعليمات والنصوص البرمجية والمراجع التي توسّع إمكانات وكيل الذكاء الاصطناعي لتنفيذ مهام متخصّصة. تتيح لك هذه الأدوات تدوين معايير المؤسسة وتنفيذ مهام سير العمل المعقّدة بشكل آلي.
أهداف المختبر
في هذا التمرين العملي، عليك:
- تجربة تقدّم السياق: تعرَّف على كيفية تحسين قدرة الذكاء الاصطناعي على حلّ المشاكل من خلال زيادة السياق.
- تحديد المشاكل وحلّها يدويًا مقارنةً بالذكاء الاصطناعي: قارِن بين صعوبة تصحيح الأخطاء يدويًا ومهام العمل التي تساعد فيها تكنولوجيات الذكاء الاصطناعي.
- تصحيح الأخطاء في السياق الكامل: استخدِم Gemini CLI مع خادم GKE MCP لتصحيح أخطاء التطبيقات مع إدراك البنية الأساسية بالكامل.
- توسيع الإمكانات: تعلَّم كيفية كتابة مهارات مخصّصة لأتمتة مهام سير العمل.
ملاحظة حول نتائج النموذج اللغوي الكبير
بسبب طبيعة هذا الدرس التطبيقي وطريقة عمل النماذج اللغوية الكبيرة، من المحتمل أن تختلف النتائج التي تحصل عليها عن النتائج النموذجية المعروضة. هذا السلوك متوقّع من الذكاء الاصطناعي التوليدي. ركِّز على فهم الخطوات والاستدلال الذي يقدّمه النموذج، بدلاً من محاولة تكرار النص أو التنسيق الدقيق في الأمثلة.
2. إعداد المشروع
قبل بدء المعمل، جهِّز بيئتك. افتح Cloud Shell، واختَر مشروعك، وشغِّل نصوص الإعداد البرمجية. لِنبدأ.
فتح Cloud Shell
في هذا المختبر، استخدِم Cloud Shell، وهي بيئة طرفية مستندة إلى المتصفّح توفّرها Google Cloud. وهي تأتي مُعدّة مسبقًا بجميع الأدوات التي تحتاج إليها، بما في ذلك واجهة سطر الأوامر (CLI) في Google Cloud (gcloud) وkubectl وGemini CLI، ما يوفّر عليك الوقت اللازم لتثبيت هذه الأدوات على جهازك المحلي.
- انتقِل إلى Google Cloud Console.
- انظر إلى عنوان أعلى يسار وحدة التحكّم وانقر على الزر تفعيل Cloud Shell (يبدو كأمر طرفي
>_). - يتم فتح جلسة محطة طرفية في أسفل نافذة المتصفّح. انقر على متابعة عندما يُطلب منك ذلك.
اختيار مشروع
في نافذة Cloud Shell، تأكَّد من أنّك تعمل ضمن المشروع الصحيح.
- اختَر مشروعًا حاليًا أو أنشِئ مشروعًا جديدًا مخصّصًا لهذا المختبر في "وحدة التحكّم".
- دوِّن رقم تعريف المشروع. اضبط المشروع في الصدفة الحالية من خلال تنفيذ الأمر:
gcloud config set project [YOUR_PROJECT_ID]
إعداد الدرس التطبيقي
الآن، شغِّل نصوص الإعداد البرمجية لتجهيز البيئة وإدخال الأخطاء في الدرس التطبيقي.
- استنساخ المستودع:
👉💻 شغِّل الأوامر التالية لاستنساخ دليل الميزة الاختبارية فقط:git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos ~/devrel-demos cd ~/devrel-demos git sparse-checkout set codelabs/ai-toolkit-lab-1 - انتقِل إلى دليل المختبر:
👉💻 نفِّذ ما يلي:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/ - ضبط متغيرات البيئة:
👉💻 نفِّذ الأوامر التالية لضبط مشروعك ومنطقتك:export PROJECT_ID=$(gcloud config get-value project) export REGION=us-central1 - تشغيل نص التهيئة البرمجي:
يفعّل هذا النص البرمجي واجهات برمجة التطبيقات المدرَجة أدناه، وينشئ مجموعة GKE Autopilot، ويضمن تثبيت الأدوات المطلوبة.
👉💻 شغِّل النص البرمجي من الدليل الجذري: ملاحظة: قد يستغرق إنشاء المجموعة من 5 إلى 10 دقائق../setup.sh - تهيئة الحالة المعطّلة:
لمحاكاة السيناريو الذي تركك فيه زملاؤك في العمل ببيئة معطّلة، شغِّل النص البرمجيbreak.sh. يؤدي ذلك إلى نسخ البيانات المعطّلة إلى دليل قاعدة الرموز النشطة.
👉💻 شغِّل النص البرمجي:./break.sh - الاستعداد للتمارين العملية:
لمنع الذكاء الاصطناعي من الغش (الاطّلاع على الحلول)، انتقِل إلى الدليلcymbal-bankلبقية التمارين العملية.
👉💻 شغِّل:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank
واجهات برمجة التطبيقات المفعّلة
يتيح نص التهيئة البرمجي العديد من واجهات Google Cloud API. في ما يلي ما تفعله:
- container.googleapis.com: واجهة برمجة التطبيقات Google Kubernetes Engine API، وهي مطلوبة لإجراء أي عمليات على مستوى المجموعة.
- generativelanguage.googleapis.com: واجهة برمجة التطبيقات التي تتيح لأداة Gemini CLI التواصل مع نماذج Gemini.
- cloudresourcemanager.googleapis.com: مطلوب لفحص البيانات الوصفية على مستوى المشروع وإدارة الأذونات.
- logging.googleapis.com: ضروري لتحديد المشاكل وحلّها، لأنّه يتيح استرداد السجلّات وتحليلها من الحاويات.
3- المرحلة 0: تحديد المشاكل وحلّها يدويًا (بدون ذكاء اصطناعي)
بعد الانتقال إلى دليل cymbal-bank، لنحاول العثور على الأخطاء يدويًا. هذه هي "الطريقة الصعبة". جرِّب الأداء الأساسي قبل السماح للذكاء الاصطناعي بتولّي المهام الصعبة. تتضمّن عملية تحديد المشاكل وحلّها يدويًا استخدام أدوات عادية، مثل kubectl، لفحص حالة المجموعة واسترداد السجلات وقراءة ملفات YAML لرصد أي تناقضات. غالبًا ما تكون هذه العملية بطيئة ومملة وتتطلّب خبرة كبيرة. ويشكّل هذا الوصف نقطة مرجعية مثالية لأدوات الذكاء الاصطناعي التي تستخدمها لاحقًا.
- محاولة النشر: لنرَ ما رأي Kubernetes في هذه البيانات.
👉💻 شغِّل الأمر التالي لتطبيق البيانات الوصفية: قد يستغرق بدء تشغيل الحاويات بضع ثوانٍ. يمكنك مراقبة حالة التشغيل باستخدام الأمر watch kubectl get pods. بعد أن يتم تشغيلها، استخدِم ctrl+c للخروج من عملية المراقبة.ستلاحظ ظهور وحدتَي pod غير ناجحتَين في القائمة:kubectl apply -f kubernetes-manifests/- تعرض وحدة frontend رسالة "CreateContainerConfigError". يشير هذا النوع من الأخطاء بشكل عام إلى أنّ الحاوية تواجه مشكلة في تحميل الإعدادات المطلوبة. فكِّر في الموارد الخارجية التي قد يحتاج إليها الحاوي لبدء التشغيل، مثل متغيّرات البيئة أو الأسرار أو ConfigMaps التي قد تكون مضبوطة بشكل خاطئ أو مفقودة. عليك التحقّق من إعدادات الحزمة للعثور على السبب المحدّد.
- وحدة userservice في حالة ImagePullBackOff. عندما تظهر لك هذه الرسالة، يعني ذلك عادةً أنّ المجموعة غير قادرة على استرداد صورة الحاوية التي طُلب منها استخدامها. يجب مراعاة تفاصيل طلب الصورة: هل اسم الصورة وعلامتها صحيحان تمامًا؟ هل هناك مشاكل محتملة في الأذونات المتعلقة بالسجلّ؟ ألقِ نظرة على مصدر الصورة لمعرفة سبب تعذُّر تنفيذ الطلب.
- فحص الضرر: استخدِم أوامر Kubernetes العادية لمعرفة ما الذي يتعذّر تنفيذه.
- 👉💻 الاطّلاع على حالة الحاويات وأسمائها:
kubectl get pods- الملاحظة: تظهر لك إعلانات ضمن مجموعات في
ImagePullBackOffأوCrashLoopBackOffأوPendingأوCreateContainerConfigError. - ملاحظة: لا يعني بالضرورة أنّ وحدة pod في الحالة
Runningتعمل بشكل صحيح. على سبيل المثال، قد لا تتوفّر فيها عمليات فحص كافية للحالة (النشاط/الاستعداد)، ما يؤدي إلى وضع علامة "قيد التشغيل" عليها حتى إذا كان التطبيق بداخلها لا يعمل. يمكن أن تعرض السجلات أخطاءً، على الرغم من أنّ وحدة pod تبدو قيد التشغيل. هناك 11 خطأ مختلفًا يجب إصلاحها إجمالاً.
- الملاحظة: تظهر لك إعلانات ضمن مجموعات في
- 👉💻 صف وحدة pod لا تعمل لعرض الأحداث (استبدِل
[POD_NAME]باسم وحدة pod فعلية):kubectl describe pod [POD_NAME] - 👉💻 تحقَّق من سجلّات وحدة pod التي تعذّر تشغيلها للاطّلاع على أخطاء التطبيق:
kubectl logs [POD_NAME]
- 👉💻 الاطّلاع على حالة الحاويات وأسمائها:

- التحقّق من المشكلة: افتح ملفات البيان في
kubernetes-manifests/باستخدام "محرِّر Cloud Shell" أوcatفي الوحدة الطرفية. حاوِل ربط الأخطاء التي تظهر لك في السجلّات والأحداث بالإعدادات في ملفات YAML.التحدي: حاوِل إصلاح خطأ واحد فقط يدويًا. لاحظ كيف عليك التنقّل بين الملفات لمعرفة بقية سلسلة الأخطاء.
4. المرحلة 1: طرح الأسئلة على الويب (واجهة مستخدم Gemini على الويب)
بما أنّ تحديد المشاكل وحلّها يدويًا يستغرق وقتًا طويلاً، لنحاول استخدام مساعد يعمل بالذكاء الاصطناعي. تطبيق Gemini للويب هو واجهة دردشة قوية للأغراض العامة. ويتميّز بشرح المفاهيم وإنشاء مقتطفات من الرموز البرمجية. ومع ذلك، تعمل هذه الأداة بدون أي سياق لبيئتك المحدّدة. ولا يمكنه الاطّلاع على ملفاتك أو فحص مجموعتك أو تنفيذ الأوامر. عليك نسخ رسائل الخطأ ومحتوى الملفات ولصقهما يدويًا.

- الانتقال إلى Gemini: افتح gemini.google.com في علامة تبويب جديدة. يجب تسجيل الدخول باستخدام حسابك على Google.
- طلب المساعدة بشأن خطأ محدّد: لنفترض أنّك ترى الخطأ
ImagePullBackOffفي اللوحةuserservice.
👉💬 أدخِل هذا الطلب في واجهة مستخدم Gemini على الويب:My Kubernetes deployment for 'userservice' is failing with ImagePullBackOff. Here is the image name: us-central1-docker.pkg.dev/bank-of-anthos-ci/bank-of-anthos/user-service:v0.6.9. What is wrong? - ردّ الذكاء الاصطناعي: يقدّم لك Gemini قائمة بالأسباب الشائعة:
- الصورة غير متوفّرة.
- ليس لديك أذونات لسحبه.
- هناك خطأ إملائي.
userservice(بدون الشرطة) ما لم يرَ مشروعك.
تتمثّل المشكلة الرئيسية هنا في أنّ Gemini لا يمكنه الوصول إلى بيئتك المحلية. للحصول على السياق المطلوب، عليك تقديمه يدويًا (من خلال إدخال طلب ونسخ النص ولصقه)، وهو أمر يستغرق وقتًا طويلاً وعرضة للأخطاء.
5- المرحلة 2: إمكانات نافذة الأوامر (Gemini CLI)
انتقِل الآن إلى نافذة الأوامر باستخدام Gemini CLI. يضع Gemini CLI إمكانات نماذج Gemini مباشرةً في نافذة الأوامر على جهازك. تعيش واجهة سطر الأوامر حيث تعمل. يمكنه قراءة الملفات المحلية وقبول الإدخال عبر الأنابيب وحتى تنفيذ أوامر shell نيابةً عنك (بموافقتك). وهذا يجعلها مفيدة للغاية لدمج الذكاء الاصطناعي في سير عملك بدون الحاجة إلى التبديل بين التطبيقات. لمزيد من المعلومات التفصيلية والاستخدام المتقدّم، يُرجى الرجوع إلى مستندات Gemini CLI الرسمية.
ملاحظة: تم الآن إطلاق Antigravity CLI رسميًا، وهي الإصدار الأحدث من Gemini CLI. يواصل هذا المختبر استخدام Gemini CLI. لمزيد من التفاصيل حول واجهة سطر الأوامر في Antigravity، يمكنك الاطّلاع على المستندات الرسمية حول واجهة سطر الأوامر في Antigravity.
السياق وإذن الوصول
قبل الانتقال إلى التعليمات، يُرجى العِلم أنّ إمكانية وصول Gemini CLI إلى مشروعك تعتمد على المكان الذي تشغّله منه. يمكن للنموذج الاطّلاع على الملفات والمجلدات ذات الصلة بدليل العمل الحالي. إذا شغّلتها من جذر مشروعك، سيكون بإمكانها الوصول إلى جميع الملفات في هذا المشروع. إذا شغّلتها من دليل فرعي، سيقتصر عرضها على هذا الدليل الفرعي والعناصر الثانوية فيه. احرص دائمًا على أن تكون في الدليل الصحيح قبل أن تطلب من النموذج تحليل الملفات أو تعديلها.
بدء استخدام Gemini CLI
يتضمّن Cloud Shell أداة Gemini CLI تلقائيًا. ما عليك سوى تشغيلها لبدء استخدامها مع ملفاتك المحلية.
- انتقِل إلى دليل Cymbal Bank:
👉💻 نفِّذ الأمر التالي للتأكّد من أنّك في الدليل الصحيح:cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank - بدء استخدام Gemini CLI:
👉💻 شغِّل الأمر التالي لبدء استخدام Gemini CLI:gemini

استخدام Gemini CLI
كل ما تعرفه عن هذا التطبيق هو مكان العثور على الرمز، وأنّه يتعذّر تشغيله. لنتعرّف على المزيد حول هذه المشكلة وكيف يمكن أن يساعدك Gemini في حلّها. أولاً، جرِّب اختبار قدرته على استكشاف السياق من خلال طرح سؤال حول ملفات التطبيق التي من المفترض أن يتمكّن من رؤيتها.
- استكشاف قاعدة الرموز: اسأل Gemini شرح ماهية هذا التطبيق ووظائفه.
👉💬 أدخِل هذا الطلب في Gemini CLI:What is this application and what does it do?
يقرأ Gemini CLI الملفات في الدليل الحالي ويقدّم نظرة عامة على المشروع. - محاولة العثور على مشكلة في قاعدة الرموز: بما أنّ Gemini CLI يمكنه الاطّلاع على ملفاتك، يمكنك أن تطلب منه العثور على عدم تطابق.
👉💬 أدخِل الطلب التالي في Gemini CLI:The contacts service pod is running, but I can't reach the service. Review kubernetes-manifests/contacts.yaml and check for common issues
يقرأ Gemini CLI الملفات ويرصد عدم التطابق بينapp: contacts-backendوapp: contacts. هذه ميزة كبيرة مقارنةً بالمراحل السابقة. - اطلب منه إصلاحها:
👉💬 أدخِل هذا الطلب في Gemini CLI:Fix the label mismatch in contacts.yaml so the service matches the deployment.
يعرض لك Gemini CLI ملف YAML المعدَّل أو حتى يطبّق التغيير إذا وافقت على الأمر. - القيود: على الرغم من أنّه يرى الملفات، إلا أنّه لا يعرف بالضبط ما يتم تشغيله في مجموعتك. إذا تعذّر تشغيل وحدة بسبب خطأ وقت التشغيل غير الواضح في ملف YAML الثابت، لا يمكن المساعدة بدون سجلّات أو حالة المجموعة.
ملاحظة: سيطلب منك Gemini CLI الموافقة عند تنفيذ الأوامر أو إجراء تعديلات على الملفات، ما يضمن لك الحفاظ على التحكّم في بيئتك. عندما تظهر لك رسالة طلب موافقة مثل الرسالة أدناه، يمكنك الضغط على مفتاح Enter للردّ بـ "1. السماح مرة واحدة" لكل طلب إجراء. يمكنك أيضًا الضغط على مفتاح السهم المتّجه للأسفل ثم الضغط على مفتاح Enter لاختيار "2. السماح لهذه الجلسة"، ما سيؤدي إلى أن يتّخذ Gemini CLI هذا الإجراء دائمًا بشكل مستقل، بدون طلب إذنك، طوال مدة هذه المحادثة. ومع ذلك، إذا أغلقت Gemini CLI وأعدت فتحه، لن يكون لديه هذا الإذن وسيطلب منك الإذن مرة أخرى قبل اتخاذ أي إجراء.

ملاحظة: إذا واجهتك مشكلة أو أردت إعادة المحاولة من البداية، يمكنك إعادة ضبط بيانات Kubernetes إلى حالتها الأصلية المعطّلة في أي وقت عن طريق تنفيذ ../break.sh من الدليل cymbal-bank.
ملاحظة: إذا بلغت الحدّ الأقصى للاستخدام، اختَر "إيقاف" ثم شغِّل /model لمعرفة النماذج التي بلغت الحدّ الأقصى للاستخدام والتبديل إلى نموذج مختلف، مثل gemini-2.5-flash-lite. بعد ذلك، اطلب من النموذج "المتابعة" لمواصلة الدرس التطبيقي باستخدام النموذج الجديد.
6. المرحلة 3: تصحيح الأخطاء في السياق الكامل (Gemini CLI + GKE MCP)
في حين أظهرت المرحلة 2 مدى فعالية الذكاء الاصطناعي عندما يمكنه رؤية ملفاتك، كانت أيضًا مزعجة. كان عليك الموافقة يدويًا على كل ملف تتم قراءته وكل إجراء يتم تنفيذه في الأداة، ما يؤدي إلى حدوث مشاكل كبيرة أثناء جلسة تصحيح الأخطاء المعقّدة. تتضمّن المرحلة 3 خادم MCP في GKE للمساعدة في حلّ هذه المشكلة، ما يوفّر للذكاء الاصطناعي "إدراكًا مباشرًا للبنية الأساسية". يتيح ذلك لـ Gemini تحديد المشاكل في السجلات والأحداث والبيانات الوصفية وحلّها مع عدد أقل من الانقطاعات اليدوية، ما يؤدي إلى إنشاء مسار أكثر آلية وتماسكًا لتحديد المشاكل وحلّها.
ما هو برنامج MCP؟
لفهم مفهوم MCP، من المفيد أولاً التعرّف على مفهوم الأدوات في عالم الذكاء الاصطناعي. الأداة هي في الأساس دالة أو تطبيق خارجي يمكن أن يستخدمه نموذج لغوي كبير لتنفيذ إجراءات أو استرداد بيانات لا يمكنه الوصول إليها بطريقة أخرى، مثل التحقّق من حالة الطقس أو تشغيل نص برمجي معيّن أو طلب البحث في قاعدة بيانات. على الرغم من أنّ الأدوات الفردية فعّالة، إلا أنّ مشاركتها بشكل آمن ومتّسق بين بيئات وعملاء الذكاء الاصطناعي المختلفين كانت دائمًا من التحديات الصعبة. تحلّ MCP هذه المشكلة من خلال العمل كمنصة موحّدة يمكنها استضافة هذه الأدوات وإتاحتها لأي عميل متوافق مع الذكاء الاصطناعي.
بروتوكول سياق النموذج (MCP) هو بروتوكول مفتوح المصدر يتيح لنماذج الذكاء الاصطناعي الوصول بأمان إلى مصادر البيانات والأدوات الخارجية. بدلاً من ترميز عمليات الدمج لكل أداة أو قاعدة بيانات معيّنة، توفّر MCP طريقة موحّدة لتتفاعل النماذج مع بيئتها.
يمكنك عرض الأدوات المتاحة في Gemini CLI من خلال تنفيذ /mcp داخل Gemini CLI.
في هذا المختبر، يتيح خادم GKE MCP لأداة Gemini CLI التفاعل مباشرةً مع مجموعة GKE، ما يتيح لها فحص الموارد وقراءة السجلات ومساعدتك في تصحيح الأخطاء مع إدراك كامل لحالة المجموعة النشطة. ويحوّل ذلك الذكاء الاصطناعي من أداة ثابتة لتحليل الرموز إلى مساعد نشط لتحديد المشاكل وحلّها يفهم الحالة النشطة لبنيتك الأساسية.
ضبط إضافة GKE MCP
تلقائيًا، تكون Gemini CLI أداة للأغراض العامة. اضبط إعدادات خادم GKE MCP من خلال إنشاء ملف إعداد.
- 👉💻 أولاً، اخرج من Gemini CLI إذا كنت لا تزال تستخدمه عن طريق كتابة
/quit. - 👉💻 نفِّذ الأمر التالي لإنشاء دليل الإضافة:
mkdir -p ~/.gemini/extensions/gke - 👉💻 نفِّذ الأمر التالي لإنشاء ملف الإعدادات. سيؤدي هذا الأمر تلقائيًا إلى إدراج
PROJECT_IDفي الملف:cat << EOF > ~/.gemini/extensions/gke/gemini-extension.json { "name": "gke", "version": "1.0.0", "mcpServers": { "container": { "httpUrl": "https://container.googleapis.com/mcp", "authProviderType": "google_credentials", "oauth": { "scopes": ["https://www.googleapis.com/auth/container"] }, "timeout": 30000, "headers": { "x-goog-user-project": "$PROJECT_ID" } } } } EOF - 👉💻 ابدأ استخدام Gemini CLI:
gemini - تأكَّد من تفعيل خادم MCP من خلال كتابة
/mcpداخل Gemini CLI.
اسأل Gemini لتصحيح الأخطاء باستخدام حالة المجموعة
- تصحيح خطأ في عملية النشر: اطلب الآن من Gemini فحص المجموعة وإصلاح البيانات الوصفية استنادًا إلى ما يجده.
👉💬 أدخِل هذا الطلب في Gemini CLI:The frontend deployment is failing. Can you use your tools to check the logs and events of the pods, and then fix it?
يستخدم Gemini أدوات MCP لتنفيذ أوامرkubectlفي الخلفية. ويرى الخطأImagePullBackOff، ويوضّح سببه، ويقترح الحل الصحيح. - حلّ المشاكل المعقّدة: اطلب منه البحث في السجلات عن أخطاء على مستوى التطبيق.
👉💬 أدخِل هذا الطلب في Gemini CLI:Check the logs for the 'contacts' pod. Why is it failing to connect to the database?
سيرى الخطأ "تم رفض الاتصال" وسيتتبّعه وصولاً إلى عدم تطابق المنفذ أو اسم الخدمة فيconfig.yaml! - التكرار: واصِل الطلب من Gemini حلّ المشاكل الأخرى التي عثرت عليها في المرحلة 0.
👉💬 أدخِل هذا الطلب في Gemini CLI:Check if the service 'contacts' is correctly routing traffic to its pods
👉💬 أدخِل هذا الطلب في Gemini CLI:Are there any pods failing due to resource limits?
ملاحظة: إذا واجهتك مشكلة أو أردت إعادة المحاولة من البداية، يمكنك إعادة ضبط بيانات Kubernetes إلى حالتها الأصلية المعطّلة في أي وقت عن طريق تنفيذ ../break.sh من الدليل cymbal-bank.
7. المرحلة 4: تعزيز قدرات الفريق (مهارات الموظفين)
أخيرًا، يمكنك توسيع نطاق قدرات الذكاء الاصطناعي لتلبية احتياجاتك المحدّدة من خلال إنشاء "مهارات وكيل" مخصّصة.
ما هي مهارات الوكيل؟
مهارات الوكيل هي حِزم من التعليمات والبرامج النصية والموارد التي توسّع قدرات وكيل الذكاء الاصطناعي لتنفيذ مهام متخصّصة. وتتيح لك هذه المهارات تدوين معايير المؤسسة وتنفيذ مهام سير العمل المعقّدة آليًا. وتكون المهارة متاحة في دليل محدّد وتحتوي على ملف SKILL.md يحدّد سلوكها. ومن خلال إنشاء المهارات، يمكنك التأكّد من أنّ الذكاء الاصطناعي يتّبع عملية متّسقة وقابلة للتكرار بدلاً من الارتجال.
يبدو دليل المهارات النموذجي على النحو التالي:
my-skill/
├── SKILL.md # Main instruction file (Required)
├── scripts/ # Helper scripts (Optional)
└── resources/ # Templates or data files (Optional)
إنشاء مهارة لتحديد مشاكل Kubernetes وحلّها
بدلاً من إنشاء هذه الملفات يدويًا، يوفّر Gemini CLI طريقة فعّالة لإنشاء بنية المهارات باستخدام اللغة الطبيعية.
لنفترض أنّك تريد إنشاء مهارة باسم k8s-troubleshooter لأتمتة الخطوات التي نفّذتها للتو.
- إنشاء مهارة من خلال التلقين: يمكنك أن تسأل Gemini CLI إنشاء المهارة لك استنادًا إلى ما تعلّمته اليوم.
👉💬 أدخِل هذا الطلب في Gemini CLI:Create a new skill called 'k8s-troubleshooter' that helps diagnose issues with Kubernetes manifests and cluster state. It should be able to analyze pod logs, events, and resource descriptions to identify common deployment problems and configuration errors.
كما هي الحال عند استدعاء أداة أو تنفيذ إجراء، من المفترض أن يخبرك Gemini CLI بأنّ طلبك قد فعّل ميزة "صانع المهارات". هذه مهارة تم ضبط إعداداتها مسبقًا في Gemini CLI، وتتيح لـ Gemini إنشاء "مهارات الوكيل".
من المفترض أن يطلب منك Gemini الإذن بإنشاء دليل المهارات. يمكنك الموافقة من خلال النقر على "1. السماح مرّة واحدة".
يقدّم Gemini تلقائيًا:- ينشئ هذا الإذن دليلاً في
~/.gemini/skills/k8s-troubleshooter/. - ينشئ ملف
SKILL.mdيتضمّن تعليمات استنادًا إلى طلبك. - تنشئ هذه السمة أدلة موارد عادية.
- ينشئ هذا الإذن دليلاً في
- إعادة تشغيل Gemini CLI:
👉💻 أغلق Gemini CLI (/quit)، ثم أعِد تشغيله:gemini - التأكّد من تحميل الأداة:
👉💻 تأكَّد من أنّ الأداة نشطة من خلال كتابة/skillsداخل Gemini CLI. من المفترض أن يظهر لكk8s-troubleshooterفي القائمة. - طريقة عملها عمليًا: يمكنك الآن استدعاء المهارة:
👉💬 أدخِل هذا الطلب في Gemini CLI:Use the k8s-troubleshooter skill to find out why the contacts service is failing.
يتبع الذكاء الاصطناعي الخطة المنظَّمة فيSKILL.mdبدلاً من الارتجال، ما يؤدي إلى نتائج أكثر اتساقًا.
تمرين: وضع تصوّر لمهاراتك
فكِّر في سير عملك اليومي. ما هي المهمة المتكرّرة التي يمكنك تنفيذها تلقائيًا باستخدام Skill؟
- الفكرة: مهارة لمراجعة بيانات التطبيق بحثًا عن أفضل ممارسات الأمان قبل النشر
- فكرة: مهارة لإنشاء إعدادات معقّدة لمجموعة GKE استنادًا إلى نوع عبء العمل
8. الخاتمة
يوضّح هذا المختبر طريقة جديدة للتفاعل مع البنية الأساسية السحابية من خلال التقدّم عبر مستويات مختلفة من سياق الذكاء الاصطناعي. ومن خلال الانتقال من عدم توفّر أي سياق إلى سياق البنية الأساسية الكاملة (Gemini CLI + GKE MCP)، يمكنك معرفة مدى فعالية المساعد المستند إلى الذكاء الاصطناعي عندما يرى ملفاتك وحالة مجموعتك.
ملخّص الدرس التطبيقي
- أهمية السياق: يمكنك ملاحظة كيف أنّ أدوات الذكاء الاصطناعي التي لا تتضمّن أي سياق لا يمكنها المساعدة في حلّ مشاكل معيّنة في قاعدة الرموز.
- سياق نافذة الأوامر: يمكنك استخدام Gemini CLI لتحليل الملفات المحلية وتحديد أخطاء الإعدادات مباشرةً من مساحة عملك.
- تصحيح الأخطاء في السياق الكامل: يمكنك استخدام Gemini CLI مع MCP للسماح للذكاء الاصطناعي بتشخيص المشاكل المعقّدة وحلّها من خلال ربط ملفات قاعدة الرموز بحالة المجموعة النشطة.
- قابلية التوسّع: ستتعرّف على "المهارات" وكيفية استخدامها لتدوين المعرفة المؤسسية.
تنظيف
لمنع تحصيل رسوم مستمرة، شغِّل نص الإيقاف. يُرجى العلم أنّ هذه الخطوة غير ضرورية إذا كنت تجري التدريب العملي على Qwiklabs.
👉💻 نفِّذ الأمر التالي من دليل ورشة العمل:
cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/
./teardown.sh
الخطوات التالية
في ما يلي بعض المراجع المقترَحة لمزيد من القراءة:
- مستندات Gemini CLI: المستندات الرسمية الخاصة بـ Gemini CLI.
- مستندات GKE: الصفحة المقصودة لجميع مستندات GKE
- هندسة المنصات على Google Cloud: إرشادات حول كيفية التعامل مع هندسة المنصات على Google Cloud
- الذكاء الاصطناعي وتعلُّم الآلة على GKE: مستندات حول تشغيل أحمال عمل الذكاء الاصطناعي وتعلُّم الآلة على GKE
- مركز بنية Google Cloud: إرشادات وأفضل الممارسات لإنشاء أحمال العمل على Google Cloud
9- الملحق: حلّ لمشاكل البيان
إذا واجهتك مشكلة أو أردت التحقّق من الأخطاء، إليك قائمة بالأعطال التي تمّت إضافتها في الدليل manifests-broken/ وكيفية إصلاحها:
- عناوين URL مكتوبة بشكل غير صحيح في
config.yaml:- خطأ:
TRANSACTIONS_API_ADDR: "ledgerwriter::8080"(نقطتان رأسيتان متجاورتان). - السبب: يتعذّر على التطبيق تحليل العنوان، ما يؤدي إلى حدوث أخطاء في الاتصال.
- الحل: غيِّرها مرة أخرى إلى
"ledgerwriter:8080".
- خطأ:
- تصنيفات غير متطابقة في
contacts.yaml:- الخطأ: تم ضبط أداة اختيار الخدمة على
app: contacts-backendبدلاً منcontacts. - السبب: لا يمكن للخدمة العثور على أجهزة Pod (التي لا يزال فيها
app: contacts)، لذا لن يتم توجيه حركة البيانات. - الحلّ: غيِّر أداة الاختيار إلى
app: contacts.
- الخطأ: تم ضبط أداة اختيار الخدمة على
- عدم تطابق المنافذ في
userservice.yaml:- خطأ: تم ضبط الخدمة
targetPortعلى8081بدلاً من8080. - السبب: سيتم إعادة توجيه عدد الزيارات المُرسَلة إلى الخدمة إلى منفذ الحاوية غير الصحيح، ما يؤدي إلى رفض الاتصال.
- الحلّ: غيِّر
targetPortإلى8080.
- خطأ: تم ضبط الخدمة
- عدم تطابق أسماء الخدمات في
config.yaml:- الخطأ:
BALANCES_API_ADDR: "balance-reader:8080"(بدلاً منbalancereader). - السبب: لن يتم حلّ اسم المضيف في نظام أسماء النطاقات لأنّ اسم الخدمة هو
balancereader. - الحل: غيِّرها مرة أخرى إلى
"balancereader:8080".
- الخطأ:
- سياسات سحب الصور في
contacts.yaml:- الخطأ:
imagePullPolicy: Never. - السبب: لن يجلب K8s الصورة من السجلّ، على افتراض أنّها محلية، وسيحدث خطأ
ErrImagePull. - الحل: أزِل السطر أو اضبطه على
IfNotPresent.
- الخطأ:
- حالات تعذُّر فحص الجاهزية في
userservice.yaml:- خطأ: تم تغيير المسار إلى
/healthzبدلاً من/ready. - السبب: لا تعرض الحاوية
/healthz، لذا يتعذّر إجراء الفحص ولا يتم وضع علامة "جاهز" على المجموعة مطلقًا. - الحلّ: غيِّر المسار إلى
/ready.
- خطأ: تم تغيير المسار إلى
- حدود الموارد في
contacts.yaml:- خطأ: تم ضبط حد الذاكرة على
10Miبدلاً من128Mi. - السبب: يحتاج التطبيق إلى المزيد من الذاكرة لبدء التشغيل، ما يؤدي إلى إيقافه بسبب خطأ OOM.
- الحلّ: استعادة الحدّ الأقصى للذاكرة
- خطأ: تم ضبط حد الذاكرة على
- متغيّرات البيئة غير متوفّرة في
frontend.yaml:- خطأ: تمت إزالة متغيّر البيئة
REGISTERED_OAUTH_CLIENT_ID. - السبب: قد يتعذّر تشغيل التطبيق أو قد يتم إيقاف الميزات إذا لم تتوفّر متغيرات البيئة المتوقّعة.
- الحلّ: استعادة تعريف متغيّر البيئة.
- خطأ: تمت إزالة متغيّر البيئة
- عدم تطابق مفتاح ConfigMap في
frontend.yaml:- خطأ:
key: DEMO_USERبدلاً منDEMO_LOGIN_USERNAME. - السبب: لا يمكن لـ K8s العثور على المفتاح في ConfigMap، ما يؤدي إلى تعذُّر بدء الحاوية.
- الحلّ: غيِّر المفتاح إلى
DEMO_LOGIN_USERNAME.
- خطأ:
- خطأ إملائي في اسم الصورة في
userservice.yaml:- خطأ:
user-serviceبدلاً منuserservice. - السبب: الصورة غير متوفّرة في السجلّ، ما يؤدي إلى ظهور الخطأ
ImagePullBackOff. - الحل: صحِّح اسم الصورة.
- خطأ:
- مشاكل حساب الخدمة في
contacts.yaml:- خطأ:
bank-of-anthos-saبدلاً منbank-of-anthos. - السبب: حساب الخدمة غير موجود أو لا يملك الأذونات اللازمة.
- الحل: استخدِم اسم ServiceAccount الصحيح.
- خطأ: