عن المشروع

Kubebuilder هو إطار عمل لبناء واجهات برمجة تطبيقات Kubernetes باستخدام تعريفات الموارد المخصصة (CRDs). وعلى غرار أطر تطوير الويب مثل Ruby on Rails وSpringBoot، فإنه يزيد السرعة ويقلل التعقيد الذي يديره المطورون لبناء ونشر واجهات برمجة تطبيقات Kubernetes بسرعة بلغة Go. وهو مبني على التقنيات الأساسية المستخدمة لبناء واجهات Kubernetes الأساسية لتوفير تجريدات بسيطة تقلل النصوص المتكررة والجهد اليدوي. لا يوجد Kubebuilder كمثال للنسخ واللصق، بل يوفر مكتبات وأدوات قوية لتبسيط بناء ونشر واجهات برمجة تطبيقات Kubernetes من الصفر. ويوفر بنية إضافات تتيح للمستخدمين الاستفادة من مساعدات وميزات اختيارية. تم تطوير Kubebuilder فوق مكتبتي controller-runtime وcontroller-tools. وهو قابل للتوسيع أيضًا ويمكن استخدامه كمكتبة في مشاريع أخرى. ويعد Operator-SDK مثالًا جيدًا على مشروع يستخدم Kubebuilder كمكتبة، حيث يستفيد من ميزة الإضافات لتضمين مشغلات غير مكتوبة بلغة Go مثل Ansible والمشغلات القائمة على Helm. يسهل الإطار سير عمل المطور لبناء واجهات البرمجة: إنشاء دليل مشروع جديد، وإنشاء واجهة أو أكثر من واجهات الموارد كتعريفات CRDs، وتنفيذ حلقات المزامنة (reconcile loops) في وحدات التحكم، والاختبار عبر التشغيل مقابل عنقود، وتحديث اختبارات التكامل المُهيأة، وبناء ونشر حاوية من ملف Dockerfile المقدم. يغطي نطاق Kubebuilder بناء واجهات البرمجة باستخدام CRDs ووحدات التحكم وWebhooks القبول. وتؤكد فلسفته على توفير تجريدات مكتبية نظيفة مع وثائق Go واضحة وجيدة الأمثلة، وتفضيل الواجهات والمكتبات على توليد الأكواد، وتوليد الأكواد على التهيئة لمرة واحدة للهياكل الأولية، والتهيئة لمرة واحدة على النصوص المتكررة المتفرعة والمعدلة. يوفر Kubebuilder مكتبات عالية المستوى فوق مكتبات العميل منخفضة المستوى لحماية المطورين من التغييرات الكاسرة، ويبدأ بأقل قدر ممكن ويوفر اكتشافًا تدريجيًا للوظائف، ويوفر إعدادات افتراضية معقولة تتيح للمستخدمين تجاوزها عند وجودها. كما يوفر مولّدات أكواد تعمل بناءً على تعليقات // + للحفاظ على النصوص المتكررة الشائعة، وأوامر تهيئة لإنشاء حزم جديدة. تحتوي المشاريع التي ينشئها Kubebuilder على ملف Makefile يثبّت الأدوات بالإصدارات المحددة أثناء إنشاء المشروع، بما في ذلك kustomize وcontroller-gen وsetup-envtest. ويُحدد الحد الأدنى المطلوب من إصدار Go بأعلى حد أدنى مطلوب من إصدار Go بين تبعياته. يدعم Kubebuilder رسميًا منصتي macOS وLinux. ويتم تطويره بواسطة مجتمع Kubernetes SIGs ويتبع نموذج طلبات السحب المعتاد على GitHub للمساهمات.