कस्टम स्टेजसह GKE रोलआउट सिक्वेन्सिंग (Rollout Sequencing)
Google Cloud च्या GKE मुळे आता तुम्ही क्लस्टर्स कोणत्या क्रमाने अपग्रेड करायचे हे ठरवू शकता. यामध्ये डिफॉल्ट रिजनल शेड्युलऐवजी तुमच्या स्वतःच्या बिझनेस लॉजिकनुसार चालणारे 'कस्टम-स्टेज रोलआउट सिक्वेन्सिंग' वापरता येते.
डझनभर किंवा शेकडो एन्व्हायर्नमेंट्समध्ये Kubernetes क्लस्टर्स अपग्रेड करणे हे एक कठीण काम आहे. सिक्युरिटी पॅचेस नियमितपणे येत असतात, परंतु तुम्हाला प्रोडक्शन सर्व्हिसेस देखील चालू ठेवाव्या लागतात. जुन्या रिजनल अपग्रेड मॉडेलमुळे, स्टेजिंग एन्व्हायर्नमेंटचे व्हॅलिडेशन पूर्ण होण्यापूर्वीच नवीन कंट्रोल-प्लेन व्हर्जन प्रोडक्शन क्लस्टरवर पुश केले जाऊ शकत होते, ज्यामुळे संपूर्ण फ्लीट (fleet) untested बदलांच्या जोखमीखाली येत असे.
जुने मॉडेल अपुरे का पडले?
रिजनल रोलआउटमध्ये त्या रिजनमधील प्रत्येक क्लस्टरला एकाच गटाप्रमाणे (single bucket) मानले जाते. जेव्हा अपग्रेड विंडो उघडते, तेव्हा क्लस्टर रिलीज पाइपलाइनमध्ये कुठेही असो, कंट्रोल प्लेन आणि नोड्स समांतर (in parallel) अपग्रेड होतात. जे टीम्स 'कॅनरी-देन-प्रोडक्शन' (canary-then-production) या कडक प्रक्रियेवर अवलंबून असतात, त्यांच्या बाबतीत "आउट-ऑफ-ऑर्डर" अपग्रेड्स होतात. यामुळे अशा रिग्रेशन्सचा (regressions) धोका निर्माण होतो, ज्यांचा मूळ बदल शोधणे कठीण जाते. याचा खर्च फक्त डाउनटाइममध्ये नसून, लवकर शोधता येण्याजोगी समस्या डीबग करण्यासाठी खर्च होणाऱ्या इंजिनिअरिंग वेळेतही असतो.
GKE रोलआउट सिक्वेन्सिंगमुळे काय नवीन मिळते?
हे नवीन फीचर RolloutSequence नावाचा एक ऑब्जेक्ट सादर करते, जो विविध स्टेजची मालिका परिभाषित करतो. प्रत्येक स्टेज हा तुमच्या फ्लीटचा एक लॉजिकल भाग असतो, जो लेबल सिलेक्टर्सद्वारे (label selectors) ओळखला जातो. ही सिस्टम एका निश्चित मार्गाचे (deterministic path) अनुसरण करते:
- प्रथम कंट्रोल-प्लेन अपग्रेड. कोणत्याही नोड्सना स्पर्श करण्यापूर्वी GKE सेंट्रल मॅनेजमेंट कंपोनंटला टार्गेट व्हर्जनवर हलवते.
- सोक टाइमर (Soak timer) सुरू होतो. कंट्रोल प्लेन टार्गेट व्हर्जनवर पोहोचल्यानंतर, एक कॉन्फिगर करण्यायोग्य विलंब (delay) सुरू होतो, ज्यामुळे तुम्हाला हेल्थ चेक करण्यासाठी वेळ मिळतो.
- नोड अपग्रेड्स समांतर चालतात. सोक टाइमर सुरू असतानाच, GKE नोड्स अपग्रेड करते, ज्यामुळे क्लस्टर वेगाने नवीन व्हर्जनवर स्थिरावते.
- पुढचा स्टेज पूर्ण झाल्यानंतरच सुरू होतो. जेव्हा सध्याच्या स्टेजमधील प्रत्येक नोड आणि कंट्रोल प्लेनचे काम पूर्ण होते आणि सोक टाइमर संपतो, तेव्हाच GKE पुढच्या स्टेजकडे वळते.
फ्लीटचे लहान, लेबल केलेल्या गटांमध्ये विभाजन करून, तुम्ही प्रथम काही कॅनरी क्लस्टर्स अपग्रेड करू शकता, मॉनिटरिंग आणि ट्रॅफिक-राउटिंग नियम अपेक्षितप्रमाणे काम करत आहेत की नाही याची खात्री करू शकता आणि त्यानंतर तेच व्हर्जन उर्वरित प्रोडक्शनमध्ये लागू करू शकता.
सिक्वेन्स व्यवस्थित ठेवण्याचे नियम
- कॅच-ऑल स्टेज (Catch-all stage): शेवटच्या स्टेजमध्ये लेबल सिलेक्टर वगळला जातो, ज्यामुळे आधी मॅच न झालेले कोणतेही क्लस्टर अपग्रेड मिळण्याची खात्री होते.
- कॉन्फ्लिक्ट रिझोल्यूशन (Conflict resolution): जर एखाद्या क्लस्टरचे लेबल्स एकापेक्षा जास्त स्टेजमध्ये बसत असतील, तर GKE त्याला पहिल्या मॅचिंग स्टेजमध्ये ठेवते, ज्यामुळे चुकून दोनदा अपग्रेड होण्यापासून बचाव होतो.
रिअल-टाइम कंट्रोल नॉब्स (Real-time control knobs)
ॲक्टिव्ह रोलआउट दरम्यान तुमचे नियंत्रण कायम राहते:
- Pause: हे पुढील सर्व अपग्रेड्स थांबवते, ज्यामुळे कॅनरी स्टेजमधील त्रुटीमुळे समस्या संपूर्ण सिस्टममध्ये पसरण्यापूर्वी तुम्ही त्याची तपासणी करू शकता.
- Force-complete: जेव्हा तुमचे व्हॅलिडेशन स्क्रिप्ट्स लवकर यश दर्शवतात, तेव्हा हे उर्वरित सोक टाइमर काढून टाकते आणि रोलआउटचा वेग वाढवते.
- Cancel: जर नवीन रिलीज झालेल्या व्हर्जनमध्ये एखादा गंभीर बग आढळला, तर हे संपूर्ण सिक्वेन्स रद्द करते, ज्यामुळे तुम्हाला रिव्हर्ट (revert) करण्याची किंवा हॉटफिक्सची वाट पाहण्याची संधी मिळते.
कोणाला फायदा होईल आणि त्याचे तोटे काय आहेत
पुढे काय पाहावे
निष्कर्ष
कस्टम-स्टेज रोलआउट सिक्वेन्सिंगमुळे GKE ऑपरेटर्सना प्लॅटफॉर्मने ठरवलेल्या क्रमाने नाही, तर त्यांच्या व्यवसायाच्या गरजेनुसार क्लस्टर्स अपग्रेड करण्याची क्षमता मिळते. कंट्रोल-प्लेन आणि नोड अपग्रेड्स वेगळे करून, कॉन्फिगर करण्यायोग्य सोक पिरियड (soak period) जोडून आणि pause/force-complete/cancel सारख्या कृती उपलब्ध करून देऊन, हे फीचर अपग्रेडचा धोका कमी करते आणि क्लाउड-नेटिव्ह टीम्सना आवश्यक असलेला वेग देखील कायम ठेवते. फ्लीट-वाईड Kubernetes अपग्रेड्सच्या गोंधळाशी झुंज देणाऱ्या कोणासाठीही, हे नवीन सिक्वेन्सिंग मॉडेल सुरक्षित आणि बिझनेस-अलाईन्ड ऑटोमेशनच्या दिशेने टाकलेले एक ठोस पाऊल आहे.
