WEBioDD Logo
WEBioDD
📁 تطوير البرمجيات ومصادر مفتوحة••⏱️ 5 دقيقة قراءة

GitHub Actions Runner Controller 0.15.0 يعزز الموثوقية

W

شبكة WEBioDD

تغطية وتحرير تقني مؤتمت بالذكاء الاصطناعي من المصادر المرجعية

GitHub Actions Runner Controller 0.15.0 يعزز الموثوقية
صورة تعبيرية
إعلان ممول
إعلانات

أصدرت GitHub الإصدار 0.15.0 من Actions Runner Controller (ARC) في الأول من أكتوبر، والذي يقدم تحسينات في الموثوقية وقابلية التوسع وقابلية المراقبة للمؤسسات التي تدير مشغلات GitHub Actions المستضافة ذاتيًا على Kubernetes. يركز التحديث على تقليل طلبات Kubernetes API غير الضرورية وتحسين إنتاجية المتحكم، مما يجعل الترقيات وعمليات الإغلاق أكثر قابلية للتنبؤ، خاصة في البيئات التي تدير أعدادًا كبيرة من مجموعات مقياس المشغلات.

أبرز النقاط

  • تقليل طلبات Kubernetes API باستخدام طلبات التصحيح (patch requests) بدلاً من طلبات التحديث الكاملة.
  • نقل تجميع حالة المشغل إلى المقاييس (metrics) لتقليل تحديثات الحالة المرسلة إلى Kubernetes API.
  • تحسين إدارة دورة الحياة من خلال ترقيات الإصدارات الفرعية في مكانها وتحسين سلوك إغلاق المتحكم.
  • إمكانية إعادة تسجيل مجموعة مقياس المشغل عند عدم وجود نظيرها المسجل في خدمة GitHub Actions.
  • حذف المشغلات المؤقتة بشكل أسرع عند خروج حاوياتها بنجاح.

أصدرت GitHub الإصدار 0.15.0 من Actions Runner Controller (ARC)، والذي يقدم تحسينات في الموثوقية وقابلية التوسع وقابلية المراقبة للمؤسسات التي تدير مشغلات GitHub Actions المستضافة ذاتيًا على Kubernetes. يركز الإصدار، الذي صدر في الأول من أكتوبر، على تقليل طلبات Kubernetes API غير الضرورية، وتحسين إنتاجية المتحكم، وجعل الترقيات وعمليات الإغلاق أكثر قابلية للتنبؤ، خاصة في البيئات التي تدير أعدادًا كبيرة من مجموعات مقياس المشغلات.

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

ما هي التحسينات الرئيسية في الإصدار 0.15.0؟

أحد المحاور الرئيسية في الإصدار 0.15.0 هو تقليل العمل الذي يقوم به المتحكم للحفاظ على مزامنة موارد المشغل. تستخدم تحديثات المتحكم الآن طلبات تصحيح Kubernetes بدلاً من طلبات التحديث الكاملة، مما يقلل من حجم حمولات API. كما تم نقل تجميع حالة المشغل إلى المقاييس لـ EphemeralRunnerSet وAutoscalingRunnerSet، مما يقلل من عدد تحديثات الحالة المرسلة إلى Kubernetes API.

تقوم المتحكمات الآن بتصفية الأحداث الواردة لتجنب التسوية غير الضرورية، بينما يمكن تكوين حدود معدل عميل API للمستمع من خلال إعدادات الاستعلامات في الثانية والاندفاع. يمكن للفرق أيضًا تكوين تزامن التسوية عالميًا أو للمتحكمات الفردية باستخدام علامات max-concurrent-reconciles. تمنح هذه التغييرات فرق المنصات مزيدًا من التحكم في كيفية تصرف ARC تحت الحمل، ومن المفترض أن تساعد في تقليل المعالجة غير الضرورية وحركة مرور API في عمليات النشر الأكبر.

يتناول الإصدار أيضًا إدارة دورة الحياة. تقوم ترقيات إصدارات التصحيح الآن بتحديث الموارد في مكانها، مع الحفاظ على تعيين واحد لواحد بين مجموعات المشغلات ذات التوسع التلقائي ومجموعات المشغلات المؤقتة، مما يقلل من التعطيل أثناء الترقيات.

كما تم تحسين سلوك إغلاق المتحكم. أصبح إعداد terminationGracePeriodSeconds قابلاً للتكوين الآن ومتوافقًا مع مهلة الإغلاق السلس لمدير المتحكم، مما يسمح للمشغلين بالتحكم بشكل أفضل في كيفية خروج المتحكم أثناء عمليات إعادة التشغيل أو الترقيات.

يمكن لـ ARC أيضًا إعادة تسجيل مجموعة مقياس المشغل عندما لا يعود نظيرها المسجل موجودًا في خدمة GitHub Actions. يساعد هذا المتحكم على التعافي من عدم التطابق بين حالة Kubernetes المحلية وحالة مجموعة المقياس التي تحتفظ بها GitHub.

أخيرًا، يمكن حذف المشغلات المؤقتة بشكل أسرع عندما تخرج حاوياتها بنجاح لأن ARC يتخطى فحصًا إضافيًا من جانب الخادم لإزالة المشغل. على الرغم من أن هذه التغييرات صغيرة بشكل فردي، إلا أنها تتناول التفاصيل التشغيلية التي تصبح ذات أهمية متزايدة عندما يتم إنشاء بيئات المشغل وتدميرها باستمرار.

ما أهمية هذه التغييرات للمشغلين؟

يعد نقل تجميع حالة المشغل إلى المقاييس ذا أهمية خاصة للفرق التي تشغل ARC كبنية تحتية مشتركة للتكامل المستمر (CI). تولد أساطيل المشغلات الكبيرة أحداث دورة حياة متكررة مع وضع المهام في قائمة الانتظار، وتوفير المشغلات، وتنفيذ أعباء العمل، وإزالة البيئات المؤقتة. يمكن أن يؤدي تقليل تصحيحات الحالة إلى تخفيف الضغط على Kubernetes API، بينما توفر المقاييس أساسًا أكثر ملاءمة لمراقبة سلوك المتحكم والمشغل الإجمالي.

تساعد إعدادات تزامن التسوية القابلة للتكوين وحدود معدل المستمع المشغلين أيضًا على ضبط التوازن بين الإنتاجية وضغط API. ومع ذلك، فإن هذه الإعدادات ليست مجرد مفاتيح أداء: فزيادة التزامن يمكن أن تزيد من المعدل الذي يتفاعل به المتحكم مع خدمات Kubernetes وGitHub. لذلك، يجب على الفرق التحقق من التغييرات مقابل أنماط أعباء العمل وقدرة المجموعة بدلاً من افتراض أن التزامن الأعلى هو الأفضل دائمًا.

ARC هو جزء من توجه أوسع نحو بنية تحتية لتنفيذ CI مُدارة ديناميكيًا. على سبيل المثال، يركز Machine Runner Orchestrator من CircleCI على توسيع نطاق المشغلات القائمة على الآلة ويدعم فئات موارد مختلفة، بما في ذلك أعباء عمل CPU وGPU وARM. بدلاً من ذلك، يتكامل ARC مباشرة مع Kubernetes لإدارة مجموعات مقياس مشغلات GitHub Actions، باستخدام بيئات المشغل المؤقتة بشكل شائع. يتناول النهجان نفس التحدي الواسع، وهو مطابقة سعة التنفيذ لطلب CI، لكنهما يختلفان في تكاملهما مع المنصة ونماذج تنفيذ المشغل.

بالنسبة للمؤسسات التي تعتمد بالفعل على GitHub Actions وKubernetes، يوفر ARC طريقة أصلية لإدارة سعة المشغل جنبًا إلى جنب مع موارد المجموعة الأخرى. يتمثل المقايضة في أن فرق المنصات يجب أن تشغل المتحكم أيضًا، وتدير سعة Kubernetes، وتفهم كيفية تفاعل توسيع نطاق المشغل مع جدولة المجموعة، وحدود API، وطلب سير العمل.

يعد ARC 0.15.0 إصدارًا تدريجيًا، لكن تركيزه يعكس اهتمامًا هندسيًا كبيرًا: بمجرد أن تخدم بنية CI التحتية العديد من المستودعات والفرق، تصبح كفاءة المتحكم وموثوقية دورة الحياة من اهتمامات التسليم بحد ذاتها.

جرّب الأداة: منسق ومتحقق JSON

🤖

إفصاح الشفافية ومصدر الخبر

كُتب هذا المقال بالذكاء الاصطناعي اعتماداً على المصدر المذكور أدناه، وفُحصت اقتباساته والأقوال المنسوبة فيه آلياً مقابل نص المصدر. لم يراجعه محرر بشري، فارجع إلى المصدر عند الشك.

زيارة المصدر الأصلي المرجعي
إعلان ممول
إعلانات

📰 مقالات وتقارير ذات صلة