‫نأمل أن تكون عناصر YAML هذه منطقية قليلاً
‫، وهذا هو المكان الذي نتعلم فيه كيفية إنشاء YAML
‫بشكل أساسي من البداية.
‫عندما بدأت في تعلم تنسيق Kubernetes YAML
‫، بدأت أولاً باستخدام أمثلة التوثيق ، إلى اليمين
‫، من مستنداتهم على kubernetes.
‫io ، أو ربما من أماكن أخرى.
‫الشيء المتعلق بالأماكن الأخرى ، تمامًا مثل Docker ، هو تلك
‫المدونات والأشياء الأخرى ، كلها أصبحت قديمة.
‫الشيء المتعلق بـ Kubernetes هو أن بعض هذه الأشياء
‫قد تغيرت بمرور الوقت ، خاصة عندما يتعلق
‫الأمر بأشياء مثل عمليات النشر والبودات والأشياء الأساسية
‫الأخرى. لقد قاموا بتعديل تنسيقاتهم.
‫تغيرت الإصدارات في API.
‫نريد أن نبقى على الأمور
‫الحالية ، مما يعني أنك بحاجة إلى معرفة كيفية
‫البدء من نقطة الصفر. كيف تعرف متى تحتاج ملفاتك إلى التغيير
‫بدلاً من مجرد إعادة قراءة الوثائق بشكل عشوائي لمعرفة
‫ما إذا كان أي شيء قد تغير ، أليس كذلك.
‫أعتقد أن هذا الجزء هو مهارة استغرقت مني
‫بعض الوقت لمعرفة هذه الأشياء ، وكيفية
‫إنشاء ملف دون استخدام نوع من القوالب
‫الموجودة مسبقًا. تحدثنا عن الأنواع الأربعة
‫في المحاضرة الأخيرة ، وهذا المفتاح الأساسي
‫من النوع ، وهو نوع المورد ، هو ما أريد التركيز
‫عليه أولاً. لأنه يمكنك الحصول على قائمة بأولئك الموجودين في مجموعة.
‫في مجموعات اختبار الإعداد الخاصة بنا ، سيكون معظمها
‫هو نفسه بيننا جميعًا.
‫عندما تدخل في الإنتاج وتبدأ في إضافة أشياء
‫تابعة لجهات خارجية إلى مجموعتك ، ستزداد هذه القائمة أطول
‫اعتمادًا على ما تستخدمه لأن أدوات الجهات الخارجية
‫يمكنها إضافة كائنات موارد جديدة إلى واجهة برمجة
‫التطبيقات.
‫لنقم بعمل موارد kubectl api.
‫ستعود على الأقل عشرات الأشياء المختلفة
‫التي يمكننا التمرير خلالها والتحدث عنها
‫لساعات.
‫لن نفعل ذلك.
‫لقد تحدثنا بالفعل عن عدد قليل منها مثل عمليات النشر
‫، والحافظات ، ومجموعات النسخ المتماثلة والخدمات.
‫هذه هي الأشياء القياسية خارج الصندوق.
‫الكثير من الأشياء المتبقية التي قد لا تلمسها أبدًا.
‫هذا هو الشيء الذي يميز Kubernetes هو أنه
‫يحتوي على الكثير لدرجة أنك قد لا تحتاج في
‫الواقع إلى كل القوة منه. ليس من المهم أن تمر وتحفظ
‫كل هذه الأشياء.
‫ستلاحظ هذا النوع من العمود على اليمين.
‫هذا ما يأتي في ملف YAML الخاص بنا.
‫إذا أردنا إنشاء حجرة ، يمكنك أن ترى أن هناك حجرة
‫لطيفة هنا. إذا أردنا إنشاء عملية
‫نشر ، فهناك نوع يسمى النشر.
‫سترى أيضًا مجموعة API.
‫مجموعة API تلك مرتبطة بإصدار
‫API. سترى ذلك في ثانية.
‫هذا لا يعطينا بالضبط دليل إرشادي
‫بالضرورة. ولكن ، إذا كنت جالسًا هنا
‫وقلت ، أنا بحاجة إلى إنشاء جراب ، فسأبحث في هذه القائمة عن الكبسولات
‫في نوع الموارد.
‫سأرى من النوع الذي هو عليه.
‫هذا ما أعلم أنني بحاجة إلى وضعه في YAML الخاص بي.
‫سأرى ما إذا كانت هناك أي مجموعة API لأن ذلك
‫سيخبرني بمكان العثور على الإصدارات التي يمكنني
‫استخدامها ، لأنك ربما رأيت وثائق
‫مختلفة لنفترض عملية النشر.
‫لأن عمليات النشر لها إصدارات متعددة بمرور الوقت.
‫كان هناك v1beta1 ، v1beta2.
‫إنه في الواقع تم نقله في API نظرًا لوجود أشياء قديمة وأشياء
‫جديدة ، لذلك قد يكون الأمر محيرًا بعض الشيء.
‫إذا نظرت إلى هذه القائمة ، ستجد في الواقع
‫أن هناك عمليات نشر هنا ، وهناك عمليات
‫نشر بالأسفل هنا.
‫الفرق الوحيد بين الاثنين هو هذا الصف
‫الأوسط ، مجموعة API.
‫مجموعة واجهة برمجة التطبيقات هذه هي المكان الذي يمكن فيه الوصول
‫إلى هذا النوع من الموارد وإنشاءه وحذفه وما إلى ذلك
‫في واجهة برمجة التطبيقات.
‫يتغلغل هذا قليلاً في الأعشاب الضارة ، ولكن بمجرد أن تبدأ
‫العمل مع هذه الأشياء ، سيتعين عليك قضاء
‫بعض الوقت عندما ترى حالات مثل رؤية نوعين من عمليات
‫النشر هنا.
‫أي واحد أستخدم؟
‫حسنًا ، تبدأ في البحث وستجد ، إما
‫في الوثائق ، أو في دليل API نفسه ، والذي
‫سنلقي نظرة عليه قليلاً.
‫سترى تلك الأشياء حيث سيخبرك أحدهم بأنه مهمل
‫، والآخر ينتقل إلى آخر وفي هذه الحالة مع
‫عمليات النشر ، الإصدار الجديد منه ، في أحدث إصدار
‫، هو واجهة برمجة التطبيقات للتطبيق.
‫الأمر التالي الذي يتماشى مع ذلك ، لمساعدتنا
‫في الحصول على صورة أفضل من النوع ، بالإضافة
‫إلى إصدار API ، هو أمر إصدارات kubectl API.
‫هذا يعطينا قائمة أقصر وهي مجرد إصدارات مختلفة
‫من واجهات برمجة التطبيقات التي نحتاج إلى
‫القلق بشأنها. في حالة عمليات النشر
‫، سترى هنا أن هناك شيئًا مألوفًا.
‫تذكر ، لقد رأينا أن هناك تطبيقًا واحدًا ، وكان هناك
‫ملحقات لعمليات النشر.
‫سنرى هؤلاء يظهرون هنا.
‫من الناحية الفنية ، هناك امتدادات
‫v1beta1 API. هناك API للتطبيقات حيث يمكنك
‫رؤية ثلاثة إصدارات مختلفة هناك.
‫ربما ترغب في استخدام تطبيقات V1 ، وليس الإصدارات
‫التجريبية القديمة.
‫ولكن ، يمكنك أن ترى أين تمسك API نوعًا ما بالإصدارات
‫المهملة من واجهة برمجة التطبيقات هذه أثناء طرح إصدارات
‫جديدة.
‫بهذه الطريقة ، بشكل أساسي ، لا يتم كسر YAML القديم الخاص بك حتى يتم تشغيل
‫العديد من الإصدارات ويقومون بسحب الأشياء من واجهة برمجة التطبيقات
‫بمجرد عدم الحاجة إليها.
‫ما يحدث عادةً على مدار عمر YAML الخاص
‫بك ، إذا كنت في الأيام الأولى من Kubernetes
‫، ربما كنت تستخدم ملف YAML الذي قال الامتدادات / v1beta1
‫لإصدار API ، وكان النوع هو النشر.
‫ولكن ، نظرًا لأن واجهة برمجة التطبيقات
‫هذه قد تغيرت ، وأصبحوا يطلقون عليها الآن واجهة برمجة
‫تطبيقات التطبيقات ، وكان الإصدار مختلفًا ، فلا يزال
‫لديك نوع من النشر ، لكنك ستغير إصدار واجهة برمجة التطبيقات
‫هذا ليكون تطبيقات / v1 الآن.
‫الطريقة التي أعرف بها ذلك هي أنه كان علي القيام بالبحث
‫وأنت تنظر في الوثائق.
‫ترى في الأمثلة ذلك ، يا الهي.
‫تقول التطبيقات الآن. لا يقول التمديدات بعد الآن.
‫هذا غريب. اسمحوا لي أن أذهب للبحث عنها. ثم تجد بعض مشكلات
‫Kubernetes في GitHub تتحدث عنها.
‫إنه فوضوي قليلاً. لا توجد دائمًا قائمة
‫إهمال واضحة لكل شيء يتغير طوال الوقت
‫، لذلك يمكن أن يمثل ذلك مشكلة.
‫الطريقة التي ستعرف بها أن هذا لا يعمل هو
‫عندما تأخذ YAML قديمًا وتقوم بتطبيقه على مجموعة
‫جديدة ، وسوف تخبرك ، أنا لا أدعم إصدار
‫API هذا بعد الآن. أو لا أعرف ما هو هذا النوع.
‫لذلك ، ستعطيك أخطاء لطيفة تتيح لك معرفة ذلك ،
‫هذه هي المشكلة. بعد ذلك ، يمكنك على الأرجح
‫إجراء بعض البحث السريع ومعرفة ما هو قديم.
‫النقطة التي أوضحها هي أن النوع ،
‫بالإضافة إلى إصدار API ، يتم استخدامهما معًا
‫لتحديد المورد الذي ستحصل عليه وإصدار API الذي
‫ستتمكن من استخدامه لهذا المورد.
‫هذان هما أول شيئين تحتاج إلى معرفتهما
‫قبل إنشاء YAML.
‫بمجرد الحصول على ذلك ، ستنشئ
‫جزء البيانات الوصفية. الشيء الوحيد الذي يجب أن يكون لديك هناك
‫هو اسم المورد الذي ستقوم بإنشائه.
‫فقط أعطها اسما جميلا.
‫بعد ذلك ، ستنتقل إلى المواصفات. هذا هو المكان الذي يوجد
‫فيه كل الإجراء لأن المواصفات ستكون مختلفة تمامًا
‫بناءً على المورد الذي تقوم بإنشائه.
‫إذا كنت تقوم بإنشاء تخزين مقابل النشر ، فيمكنك تخيل
‫كيف سيكون YAML مختلفًا تمامًا
‫، أليس كذلك.
‫في المحاضرة التالية ، سنمر ببعض أوامر kubectl
‫لمساعدتك في استكشاف واجهة برمجة التطبيقات لجميع عناصر
‫المواصفات المختلفة التي يمكنك وضعها في YAML الخاص
‫بك للحصول على موارد مختلفة.