شرح بسيط لـ CRD في Kubernetes وكيفية استخدامه

يعد Space by maryanion



CRD (تعريف المورد المخصص) موردًا خاصًا في Kubernetes يسمح لك بإدخال أي بيانات. قام فريق Kubernetes aaS من Mail.ru بترجمة مقال حول ماهيته وكيفية إنشائه واستخدامه.



ما هو CRD



CRD هو مجرد جدول في قاعدة البيانات. لنفترض أننا أنشأنا جدول "فواكه" ، فهناك العديد من السجلات فيه: "تفاح" ، "موز" ، "برتقالي". يحتوي كل سجل على أعمدة تحتوي على خصائص الفاكهة ، مثل الحلاوة والنكهة والوزن.



لذا ، فإن CRD يشبه جدول "الفاكهة".







CR (مورد مخصص) - سجل منفصل في الجدول ، على سبيل المثال ، "تفاحة" أو "موز". بعد إنشاء CRD (جدول) ، يمكنك إضافة أو إزالة (سجلات) CR.







هناك حاجة إلى CRD حيث يرغب المزيد والمزيد من المستخدمين في المساهمة بالبيانات في Kubernetes. يمكن أن يكون تنسيق البيانات مختلفًا ، ولا يتم تحديد CRDs في Kubernetes خارج الصندوق. نتيجة لذلك ، تحتاج إلى إنشاء الجداول الخاصة بك ، وتحديد أسماء وأنواع الأعمدة ، كما هو الحال في قاعدة البيانات.



على سبيل المثال ، يريد مدير تكنولوجيا المعلومات استخدام CRD لتنظيم قائمة المستخدمين أو قائمة الأقسام أو جدول العمل أو أي شيء آخر.



كيفية إنشاء ملف CRD



كما ذكرنا ، CRD هو جدول. عندما نقوم بإنشاء جدول ، نحتاج إلى ضبط تنسيقه: أسماء الأعمدة وأنواعها. في CRD ، يتم وصف هذه العناصر بتنسيق YAML أو JSON. يصف CR أيضًا كل قيمة يجب كتابتها بتنسيق YAML أو JSON.







دعونا نرى كيف يبدو CRD من الداخل: قسم







CRD مقسم إلى ثلاثة أجزاء: جزء عام ، معلومات على مستوى الجدول ومعلومات على مستوى العمود:



  1. جزء مشترك. كما هو الحال مع موارد Kubernetes الأخرى ، تتضمن البيانات الوصفية الاسم CRD ( name: "fruit-crd") apiVersionو kind.
  2. معلومات على مستوى الجدول. اسم الجدول ( kind: "fruit") ، سطر الأوامر البسيط بالاسم الصغير ( simpler: "fruits") ، الجمع ( plural: "fruits")
  3. معلومات مستوى العمود. اسم العمود ( "sweetness") ، نوع العمود ( "boolean", "string", "integer", "object") ، الكائنات المتداخلة ( : < >). تتوافق مع تنسيق الإصدار 3 من مواصفات OpenAPIS.


مزيد من المعلومات حول CRD في الدليل الرسمي .



فحص CRD



هل CRD حقًا مجرد طاولة؟ دعونا تحقق.



لا أريد أن أتذكر تنسيق CRD وأحتاج إلى طريقة أسهل لإنشائه. لذلك أنا أكتب فقط تعريف جدول ولدي بيان - أداة إنشاء CRD تلقائية.



الوصف بسيط للغاية: تحتاج إلى سرد أزواج أسماء وأنواع الأعمدة.







بعد تطبيق YML هذا ، يقوم المشغل الخاص بي في Kubernetes تلقائيًا بإنشاء CRD المقابل. يمكنك إنشاء عامل التشغيل الخاص بك ، ولكن إذا كنت تريد تجربتي ، فقم بتشغيل الأمر التالي:



kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml


بعد تثبيت المشغل بنجاح ، تحقق من أن Pod قد بدأ:



kubectl get pod -n k8sasdb-system
NAME                                         READY   STATUS    RESTARTS   AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9   2/2     Running   0          8s


يمكنك تنزيل نماذج الجداول وسجلات السجل التجاري من هنا .



هذا هو شكل CRD الذي تم إنشاؤه. على اليسار: معلومات عامة ومستوى الجدول ، يمينًا: معلومات مستوى العمود.







ثم أضفت CR التالي (YAML لفاكهة واحدة).





مثال CR "الفاكهة"



الآن دعنا نتحقق من النتائج في الجدول والعمليات على السجلات.



إنشاء جدول



kubectl create -f fruit.yaml






نجاح: تم تثبيت CRD = تم إنشاء الجدول.







هذا هو ما يعادل أمر SQL CREATE TABLE fruits;.



قم بإنشاء سجل



kubectl create -f apple.yaml






نجاح: مجموعة CR = تم إنشاء السجل. هذا هو ما يعادل أمر SQL INSERT INTO fruits values('apple', ...);.



الحصول على قائمة السجلات



kubectl get fruits






نجاح: عرض اثنين من CRR وجميع الأعمدة لهما. يعادل أمر SQL SELECT * FROM fruits;.



الحصول على سجل



kubectl get fruit apple






بنجاح. بالطبع ، يمكنك استخدام أسماء أخرى ، على سبيل المثال "موز". الأمر يعادل استعلام SQL SELECT * FROM fruits WHERE name = 'apple';.



حذف المدخلات



kubectl delete fruit apple






بعد الحذف ، فإن الأمر الخاص بفحص قائمة الفواكه بأكملها لا يظهر النتيجة "تفاحة".







بنجاح. التناظرية في SQL: DELETE FROM fruits WHERE name = 'banana';.



خاتمة



CRD هي مجرد طاولة في Kubernetes. يمكنك إنشاء جداول جديدة باستخدام CRD وإضافة سجلات باستخدام CR. أيضًا في CRD ، يمكنك تحديد مخطط الجدول عن طريق تحديد أسماء وأنواع الأعمدة. بمجرد إتقان أوامر CRD و CR و kubectl ، يمكنك تحميل أي بيانات إلى Kubernetes.



لا داعي للخوف: حتى إذا كنت لا تتذكر تنسيق CRD ، فسيساعدك عامل الهاتف. تم نشر إصدار المصدر المفتوح الخاص بي من المشغل هنا .



ماذا تقرأ:



  1. كيفية استخدام kubectl بشكل أكثر كفاءة: دليل شامل .
  2. Kubernetes: .
  3. Kubernetes .



All Articles