કસ્ટમ સ્ટેજિસ સાથે GKE રોલઆઉટ સિક્વન્સિંગ (Rollout Sequencing)
Google Cloud નું GKE હવે તમને કસ્ટમ-સ્ટેજ રોલઆઉટ સિક્વન્સિંગનો ઉપયોગ કરીને ક્લસ્ટર્સ કયા ચોક્કસ ક્રમમાં અપગ્રેડ કરવા તે નક્કી કરવાની સુવિધા આપે છે, જે ડિફોલ્ટ પ્રાદેશિક (regional) શેડ્યૂલને બદલે તમારા પોતાના બિઝનેસ લોજિકને અનુસરે છે.
ડઝનબંધ અથવા સેંકડો એન્વાયરમેન્ટ્સમાં Kubernetes ક્લસ્ટર્સને અપગ્રેડ કરવું એ એક પડકારજનક કાર્ય છે. સિક્યુરિટી પેચ નિયમિતપણે આવે છે, પરંતુ તમારે પ્રોડક્શન સેવાઓને ચાલુ રાખવાની પણ જરૂર છે. જૂનું પ્રાદેશિક અપગ્રેડ મોડેલ સ્ટેજિંગ એન્વાયરમેન્ટ તેનું વેરિફિકેશન પૂરું કરે તે પહેલાં જ પ્રોડક્શન ક્લસ્ટર પર નવું કંટ્રોલ-પ્લેન વર્ઝન મોકલી શકે છે, જેનાથી આખી ફ્લીટ (fleet) અનટેસ્ટેડ ફેરફારોના જોખમમાં આવી શકે છે.
જૂનું મોડેલ શા માટે અપૂરતું હતું
પ્રાદેશિક રોલઆઉટ પ્રદેશના દરેક ક્લસ્ટરને એક જ ગ્રુપ (bucket) તરીકે ગણે છે. જ્યારે અપગ્રેડ વિન્ડો ખુલે છે, ત્યારે રિલીઝ પાઇપલાઇનમાં ક્લસ્ટર ક્યાં છે તેની પરવા કર્યા વગર, કંટ્રોલ પ્લેન અને નોડ્સ સમાંતર (parallel) રીતે અપગ્રેડ થાય છે. જે ટીમો 'કેનારી-પછી-પ્રોડક્શન' (canary-then-production) ફ્લો પર આધાર રાખે છે, તેમને "ઓર્ડર બહારના" (out-of-order) અપગ્રેડ્સનો સામનો કરવો પડે છે, જે એવા રિગ્રેશન્સ (regressions) લાવી શકે છે જેનો ચોક્કસ ફેરફાર શોધવો મુશ્કેલ હોય છે. આનો ખર્ચ માત્ર ડાઉનટાઇમ નથી; તે એ એન્જિનિયરિંગ સમય છે જે સમસ્યાને ડિબગ કરવામાં વપરાય છે જેને વહેલી તકે પકડી શકાય તેમ હતી.
GKE રોલઆઉટ સિક્વન્સિંગ શું ઉમેરે છે
આ નવી સુવિધા RolloutSequence ઓબ્જેક્ટ રજૂ કરે છે જે સ્ટેજની શ્રેણી વ્યાખ્યાયિત કરે છે. દરેક સ્ટેજ તમારી ફ્લીટનો એક તાર્કિક ભાગ છે, જે લેબલ સિલેક્ટર્સ દ્વારા ઓળખવામાં આવે છે. સિસ્ટમ એક નિશ્ચિત (deterministic) માર્ગ અનુસરે છે:
- પહેલા કંટ્રોલ-પ્લેન અપગ્રેડ. કોઈપણ નોડ્સને અડતા પહેલા GKE કેન્દ્રીય મેનેજમેન્ટ ઘટકને લક્ષિત વર્ઝન પર લઈ જાય છે.
- સોક ટાઈમર (Soak timer) શરૂ થાય છે. કંટ્રોલ પ્લેન લક્ષ્ય સુધી પહોંચ્યા પછી, એક કન્ફિગરેબલ વિલંબ (delay) ચાલે છે, જે તમને હેલ્થ ચેક કરવા માટે સમય આપે છે.
- નોડ અપગ્રેડ્સ સમાંતર રીતે ચાલે છે. જ્યારે સોક ટાઈમર ચાલી રહ્યું હોય, ત્યારે GKE નોડ્સને અપગ્રેડ કરે છે, જેનાથી ક્લસ્ટર ઝડપથી નવા વર્ઝન પર આવી શકે છે.
- પૂર્ણાહુતિ પછી જ આગલું સ્ટેજ શરૂ થાય છે. જ્યારે વર્તમાન સ્ટેજના તમામ નોડ્સ અને કંટ્રોલ પ્લેન પૂર્ણ થાય અને સોક ટાઈમર સમાપ્ત થાય, ત્યારે GKE આગલા સ્ટેજ પર આગળ વધે છે.
ફ્લીટને નાના, લેબલ કરેલા જૂથોમાં વિભાજિત કરીને, તમે પહેલા થોડા કેનારી ક્લસ્ટર્સને અપગ્રેડ કરી શકો છો, મોનિટરિંગ અને ટ્રાફિક-રૂટિંગ નિયમો અપેક્ષા મુજબ કામ કરે છે કે નહીં તે ચકાસી શકો છો, અને પછી તે જ વર્ઝનને બાકીના પ્રોડક્શનમાં લાગુ કરી શકો છો.
સિક્વન્સને વ્યવસ્થિત રાખતા નિયમો
- કેચ-ઓલ (Catch-all) સ્ટેજ: અંતિમ સ્ટેજમાં લેબલ સિલેક્ટર હોતું નથી, જે ખાતરી આપે છે કે અગાઉ મેચ ન થયેલ કોઈપણ ક્લસ્ટરને અપગ્રેડ મળે જ છે.
- સંઘર્ષ નિવારણ (Conflict resolution): જો ક્લસ્ટરના લેબલ્સ એક કરતા વધુ સ્ટેજને સંતોષતા હોય, તો GKE તેને પ્રથમ મેચ થતા સ્ટેજમાં મૂકે છે, જેથી ભૂલથી ડબલ અપગ્રેડ ન થાય.
રિયલ-ટાઇમ કંટ્રોલ નોબ્સ (Control knobs)
સક્રિય રોલઆઉટ દરમિયાન તમે નિયંત્રણમાં રહો છો:
- Pause કોઈપણ આગળના અપગ્રેડ્સ અટકાવે છે, જેનાથી તમે સમસ્યાને ફેલાયા વગર કેનારી સ્ટેજમાં નિષ્ફળતાની તપાસ કરી શકો છો.
- Force-complete જ્યારે તમારા વેરિફિકેશન સ્ક્રિપ્ટ્સ વહેલી સફળતા રિપોર્ટ કરે છે, ત્યારે બાકીનો સોક સમય ઘટાડી દે છે, જેનાથી રોલઆઉટ ઝડપી બને છે.
- Cancel જો નવું રિલીઝ થયેલ વર્ઝન કોઈ ગંભીર બગ (bug) બતાવે છે, તો તે આખી સિક્વન્સને રદ કરે છે, જેનાથી તમે રિવર્ટ કરી શકો છો અથવા હોટફિક્સની રાહ જોઈ શકો છો.
કોને ફાયદો થાય છે, અને તેના ફાયદા-ગેરફાયદા શું છે
આગળ શું જોવું
સારાંશ (Takeaway)
કસ્ટમ-સ્ટેજ રોલઆઉટ સિક્વન્સિંગ GKE ઓપરેટર્સને પ્લેટફોર્મ જે આદેશ આપે છે તે ક્રમમાં નહીં, પરંતુ તેમના વ્યવસાયની જરૂરિયાત મુજબના ક્રમમાં ક્લસ્ટર્સ અપગ્રેડ કરવાની ક્ષમતા આપે છે. કંટ્રોલ-પ્લેન અને નોડ અપગ્રેડ્સને અલગ કરીને, કન્ફિગરેબલ સોક પિરિયડ ઉમેરીને, અને pause/force-complete/cancel એક્શન આપીને, આ સુવિધા ક્લાઉડ-નેટિવ ટીમોને જરૂરી ઝડપ જાળવી રાખીને અપગ્રેડનું જોખમ ઘટાડે છે. ફ્લીટ-વાઈડ Kubernetes અપગ્રેડના અરાજકતા સાથે ઝઝૂમી રહેલા કોઈપણ વ્યક્તિ માટે, આ નવું સિક્વન્સિંગ મોડેલ સુરક્ષિત અને બિઝનેસ-અલાઈન્ડ ઓટોમેશન તરફનું એક નક્કર પગલું છે.
