کسٹم اسٹیجز کے ساتھ GKE رول آؤٹ سیکوئنسنگ

گوگل کلاؤڈ کا GKE اب آپ کو کلسٹرز کی اپ گریڈ کرنے کی بالکل درست ترتیب طے کرنے کی اجازت دیتا ہے، جس میں کسٹم اسٹیج رول آؤٹ سیکوئنسنگ کا استعمال کیا جاتا ہے۔ یہ ڈیفالٹ ریجنل شیڈول کے بجائے آپ کے اپنے کاروباری منطق (business logic) پر عمل کرتا ہے۔

درجنوں یا سینکڑوں ماحول (environments) میں Kubernetes کلسٹرز کو اپ گریڈ کرنا ایک مشکل کام ہے۔ سیکیورٹی پیچز باقاعدگی سے آتے رہتے ہیں، لیکن آپ کو پروڈکشن سروسز کو بھی چلتا ہوا رکھنا ہوتا ہے۔ پرانا ریجنل اپ گریڈ ماڈل کسی اسٹیجنگ ماحول کے تصدیق (validation) مکمل کرنے سے پہلے ہی پروڈکشن کلسٹر پر نیا کنٹرول پلین ورژن بھیج سکتا تھا، جس سے پورا فلیٹ (fleet) غیر آزمودہ تبدیلیوں کے خطرے میں پڑ جاتا تھا۔

پرانا ماڈل کیوں ناکام رہا

ریجنل رول آؤٹ میں ریجن کے ہر کلسٹر کو ایک ہی گروپ (bucket) کے طور پر دیکھا جاتا ہے۔ جب اپ گریڈ کا وقت شروع ہوتا ہے، تو کنٹرول پلین اور نوڈز متوازی طور پر اپ گریڈ ہوتے ہیں، قطع نظر اس کے کہ کلسٹر ریلیز پائپ لائن میں کہاں واقع ہے۔ وہ ٹیمیں جو سخت 'کینری-پھر-پروڈکشن' (canary-then-production) فلو پر انحصار کرتی ہیں، ان کے ساتھ "غیر ترتیب وار" (out-of-order) اپ گریڈز ہو جاتے ہیں، جو ایسی ریگریشنز (regressions) کا باعث بن سکتے ہیں جن کا کسی مخصوص تبدیلی تک سراغ لگانا مشکل ہوتا ہے۔ اس کی قیمت صرف ڈاؤن ٹائم نہیں ہے؛ بلکہ وہ انجینئرنگ کا وقت بھی ہے جو اس مسئلے کو ڈی بگ کرنے میں ضائع ہوتا ہے جسے پہلے ہی پکڑا جا سکتا تھا۔

GKE رول آؤٹ سیکوئنسنگ کیا اضافہ کرتی ہے

یہ نیا فیچر ایک RolloutSequence آبجیکٹ متعارف کرواتا ہے جو اسٹیجز کے ایک سلسلے کی وضاحت کرتا ہے۔ ہر اسٹیج آپ کے فلیٹ کا ایک منطقی حصہ ہے، جسے لیبل سلیکٹرز (label selectors) کے ذریعے پہچانا جاتا ہے۔ سسٹم ایک یقینی راستے پر عمل کرتا ہے:

  • پہلے کنٹرول پلین کی اپ گریڈ۔ GKE کسی بھی نوڈ کو چھونے سے پہلے مرکزی مینجمنٹ کمپوننٹ کو ٹارگٹ ورژن پر منتقل کر دیتا ہے۔
  • سوک ٹائمر (Soak timer) کا آغاز۔ کنٹرول پلین کے ٹارگٹ تک پہنچنے کے بعد، ایک قابلِ کنٹرول تاخیر (delay) چلتی ہے، جو آپ کو ہیلتھ چیک کرنے کے لیے وقت فراہم کرتی ہے۔
  • نوڈز کی اپ گریڈ متوازی طور پر ہوتی ہے۔ جب سوک ٹائمر چل رہا ہوتا ہے، GKE نوڈز کو اپ گریڈ کرتا ہے، جس سے کلسٹر تیزی سے نئے ورژن پر منتقل ہو جاتا ہے۔
  • اگلا اسٹیج صرف تکمیل کے بعد شروع ہوتا ہے۔ جب موجودہ اسٹیج کے تمام نوڈز اور کنٹرول پلین مکمل ہو جاتے ہیں اور سوک ٹائمر ختم ہو جاتا ہے، تو GKE اگلے اسٹیج کی طرف بڑھتا ہے۔

فلیٹ کو چھوٹے، لیبل شدہ گروپس میں تقسیم کر کے، آپ پہلے چند کینری کلسٹرز کو اپ گریڈ کر سکتے ہیں، اس بات کی تصدیق کر سکتے ہیں کہ مانیٹرنگ اور ٹریفک روٹنگ کے اصول توقع کے مطابق کام کر رہے ہیں، اور پھر وہی ورژن باقی پروڈکشن میں رول آؤٹ کر سکتے ہیں۔

وہ اصول جو ترتیب کو برقرار رکھتے ہیں

  • کیچ-آل اسٹیج (Catch-all stage): آخری اسٹیج میں لیبل سلیکٹر نہیں ہوتا، جو اس بات کی ضمانت دیتا ہے کہ کوئی بھی کلسٹر جو پہلے میچ نہیں ہوا، اسے بھی اپ گریڈ مل جائے گا۔
  • تنازعات کا حل (Conflict resolution): اگر کسی کلسٹر کے لیبل ایک سے زیادہ اسٹیجز پر پورا اترتے ہیں، تو GKE اسے پہلے میچ ہونے والے اسٹیج میں رکھتا ہے، تاکہ غلطی سے دو بار اپ گریڈ ہونے سے بچا جا سکے۔

ریئل ٹائم کنٹرول نابس (Control knobs)

ایک فعال رول آؤٹ کے دوران آپ کنٹرول میں رہتے ہیں:

  • Pause مزید کسی بھی اپ گریڈ کو روک دیتا ہے، جس سے آپ مسئلے کو پھیلنے دیے بغیر کینری اسٹیج میں کسی ناکامی کی تحقیقات کر سکتے ہیں۔
  • Force-complete بقیہ سوک ٹائم کو ختم کر دیتا ہے جب آپ کے ویلیڈیشن اسکرپٹس جلد کامیابی کی اطلاع دیتے ہیں، جس سے رول آؤٹ کی رفتار بڑھ جاتی ہے۔
  • Cancel پوری ترتیب کو منسوخ کر دیتا ہے اگر نیا ریلیز شدہ ورژن کوئی سنگین بگ دکھاتا ہے، جس سے آپ کو واپس جانے (revert) یا ہاٹ فکس کا انتظار کرنے کی اجازت ملتی ہے۔

کسے فائدہ ہوگا، اور اس کے نقصانات کیا ہیں

آگے کیا دیکھنا ہے

خلاصہ

کسٹم اسٹیج رول آؤٹ سیکوئنسنگ GKE آپریٹرز کو کلسٹرز کو اس ترتیب میں اپ گریڈ کرنے کی صلاحیت دیتی ہے جس کی ان کے کاروبار کو ضرورت ہے، نہ کہ اس ترتیب میں جو پلیٹ فارم طے کرتا ہے۔ کنٹرول پلین اور نوڈ اپ گریڈز کو الگ کر کے، ایک قابلِ کنٹرول سوک پیریڈ شامل کر کے، اور pause/force-complete/cancel جیسے اقدامات فراہم کر کے، یہ فیچر اپ گریڈ کے خطرے کو کم کرتا ہے جبکہ اس رفتار کو برقرار رکھتا ہے جس کی کلاؤڈ نیٹو ٹیموں کو ضرورت ہوتی ہے۔ فلیٹ کے پیمانے پر Kubernetes اپ گریڈز کے انتشار سے نمٹنے والے کسی بھی شخص کے لیے، یہ نیا سیکوئنسنگ ماڈل محفوظ اور کاروباری ضروریات کے مطابق آٹومیشن کی طرف ایک ٹھوس قدم ہے۔