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

أطلقت GitHub الإصدار 0.15.0 من Actions Runner Controller (ARC)، ويتضمن تحسينات تهدف إلى تعزيز الموثوقية وقابلية التوسع والمراقبة للمؤسسات التي تستخدم runners مستضافة ذاتيًا لـ GitHub Actions على Kubernetes. يركز هذا التحديث، الذي صدر في 1 أكتوبر، على تقليل طلبات Kubernetes API غير الضرورية وتحسين إنتاجية وحدة التحكم، لا سيما في البيئات التي تدير أعدادًا كبيرة من مجموعات runner scale sets.
يعمل ARC كـ Kubernetes operator يضبط تلقائيًا عدد runners المستضافة ذاتيًا بناءً على متطلبات سير العمل. تتيح هذه القدرة للمؤسسات الحفاظ على التحكم في البنية التحتية للتنفيذ مع إنشاء وإزالة نسخ runners ديناميكيًا عند بدء المهام وإكمالها. يفيد هذا بشكل خاص المؤسسات التي تحتاج إلى تحكم محدد في بيئات البناء وعزل عبء العمل دون الحاجة إلى مجموعة دائمة من runners.
يركز الإصدار 0.15.0 بشكل كبير على تقليل عبء العمل على وحدة التحكم في مزامنة موارد runners. يستخدم التحديث الآن طلبات patch في Kubernetes لتحديثات وحدة التحكم بدلاً من طلبات التحديث الكاملة، مما يقلل من حجم حمولات API. بالإضافة إلى ذلك، انتقل تجميع حالة runners إلى مقاييس لكل من EphemeralRunnerSet وAutoscalingRunnerSet، مما أدى إلى تقليل تكرار تحديثات الحالة المرسلة إلى Kubernetes API.
تم تحسين وحدات التحكم لتصفية الأحداث الواردة لمنع إعادة المعالجة غير الضرورية، ويمكن الآن تكوين حدود معدل عميل API للمستمع من خلال إعدادات الاستعلامات في الثانية والدفعة. يمكن للفرق أيضًا تعيين تزامن إعادة المعالجة عالميًا أو لوحدات تحكم فردية باستخدام أعلام max-concurrent-reconciles. توفر هذه التغييرات لفرق المنصات تحكمًا أكبر في أداء ARC تحت الحمل، مما قد يقلل من المعالجة غير الضرورية وحركة API في عمليات النشر الكبيرة.
يحسن الإصدار أيضًا إدارة دورة الحياة. تعمل ترقيات إصدار patch الآن على تحديث الموارد في مكانها، مما يضمن تعيينًا واحدًا لواحد بين مجموعات runners التلقائية ومجموعات runners المؤقتة، مما يقلل من الاضطراب أثناء الترقيات.
تم إجراء تحسينات أيضًا على سلوك إيقاف تشغيل وحدة التحكم. أصبح إعداد terminationGracePeriodSeconds قابلاً للتكوين ومتوافقًا مع مهلة الإيقاف اللطيف لمدير وحدة التحكم، مما يسمح للمشغلين بإدارة كيفية خروج وحدة التحكم بشكل أفضل أثناء إعادة التشغيل أو الترقيات.
علاوة على ذلك، يمكن لـ ARC إعادة تسجيل مجموعة runner scale set عندما لا يكون نظيرها المسجل موجودًا في خدمة GitHub Actions، مما يساعد في التعافي من التناقضات بين حالة Kubernetes المحلية وحالة scale-set التي تديرها GitHub.
أخيرًا، يمكن حذف runners المؤقتة بسرعة أكبر عندما تخرج pods الخاصة بها بنجاح، حيث يتجاوز ARC فحصًا إضافيًا من جانب الخادم لإزالة runners. على الرغم من أن هذه التغييرات قد تبدو طفيفة بشكل فردي، إلا أنها تعالج تفاصيل تشغيلية تصبح أكثر أهمية في البيئات التي يتم فيها إنشاء نسخ runners وتدميرها بشكل متكرر.
يعد نقل تجميع حالة runners إلى مقاييس أمرًا ذا صلة خاصة للفرق التي تدير ARC كبنية تحتية مشتركة للتكامل المستمر (CI)، حيث تولد أساطيل كبيرة من runners أحداث دورة حياة متكررة.
المصدر: InfoQ